zoukankan      html  css  js  c++  java
  • 使用gradle生成protobuf

    之前介绍的都是使用protoc工具进行protobuf代码的生成,下面我们看下如何使用gradle插件进行proto文件的编译和代码生成。

    protobuf-gradle-plugin

    在google的github下有protobuf-gradle-plugin这个项目,这是用于生成protobuf的gradle官方插件(这个插件需要Gradle2.12版本以上),在gradle的build文件加上对应插件:

    apply plugin: 'com.google.protobuf'
    
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1'
        }
    }
    

    上面的插件将会添加extractIncludeProto(获得依赖proto),extractProto(获得编译的proto文件),generateProto(编译)任务,同时会将他们都配置进build,这样系统构建时都会重新运行这些任务。

    自定义配置

    设置生成的目标地址

    protobuf {
        generatedFilesBaseDir = "$projectDir/src/"
    }
    

    该配置设置protoc生成代码的目标目录,生成的具体目录还会追加package的对应目录

    设置proto文件目录

    sourceSets {
      main {
        proto {
          // 除了默认的'src/main/proto'目录新增proto文件的方法
          srcDir 'src/main/protobuf'
    	  include '**/*.protodevel'
    	}
    	java{
    	...
    	}
      }
    }
    

    设置使用protoc的具体版本

    默认使用系统path下设置的protoc,这里还可以定义特定的protoc程序

    protobuf {
      protoc {
        path = '/usr/local/bin/protoc'
      }
    }
    //或者
    protobuf {
      protoc {
    	//从仓库下载
        artifact = 'com.google.protobuf:protoc:3.0.0'
      }
    }
    
  • 相关阅读:
    函数式编程之Functional.js源码解析(一)
    libevent的bufferevent
    Luna
    线程池的实现
    如何排查字节对齐问题引起的程序诡异崩溃
    GCC编译之如何控制共享文件导出符号
    ubuntu禁用独显的问题
    protobuf的一些细节
    GCC编译之新老版本共存
    libevent的evbuffer之减少内存拷贝
  • 原文地址:https://www.cnblogs.com/resentment/p/6715124.html
Copyright © 2011-2022 走看看