protobuf编译java_用gradle简单的protobuf编译

如果您正在寻找示例gradle protobuf项目,请查看here .

我正忙着使用gradle和protobuf,我想创建一个简单的gradle项目,它将从默认的 src/main/proto , src/test/proto 中获取任何proto文件并相应地将它们编译为 src/main/java , src/test/java ,然后将其打包到jar中并发布到本地repo .

不幸的是,我是新手,无法弄清楚原始项目的组成方式 .

这是我未完成的build.gradle文件

apply plugin: 'java'

apply plugin: "com.google.protobuf"

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.0'

}

}

repositories {

mavenCentral()

}

dependencies {

compile 'com.google.protobuf:protobuf-java:3.0.0-beta-1'

}

sourceSets {

main {

proto {

srcDir 'src/main/proto'

}

java {

srcDir 'src/main/java'

}

}

test {

proto {

srcDir 'src/test/proto'

}

proto {

srcDir 'src/test/java'

}

}

}

protobuf {

// Configure the protoc executable

protoc {

// Download from repositories

artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'

}

generateProtoTasks {

// all() returns the collection of all protoc tasks

all().each { task ->

// Here you can configure the task

}

// In addition to all(), you may get the task collection by various

// criteria:

// (Java only) returns tasks for a sourceSet

ofSourceSet('main')

}

}

运行jar任务后我们有:

9265e5a2-9f80-4ce0-a37d-a1b3efdaeceb.png

你可以看到gradle将test和main protos构建到相同的类目录(红色箭头),在jar中我可以看到包含的两个生成的类(应该跳过测试) .

但主要问题是我想制作 compile proto files directly to appropriate source directories (蓝色箭头),之后普通构建会做正确的事情......毕竟我们需要src中的那些类在业务逻辑中使用它们......

所以我们只需要一个将proto编译到适当的src目录的任务......仅此而已 .

src/main/proto to src/main/java

src/test/proto to src/test/java

目前的项目位于here . 请帮忙配置一下,我很确定很多人以后会需要它...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值