如果您正在寻找样本gradle protobuf项目看here。简单protobuf编译与gradle
我有很难与gradle这个和protobuf的, 我想创建一个简单的项目的gradle将从默认src/main/proto
,src/test/proto
据此采取任何原始文件,并将其编译成src/main/java
,src/test/java
,再包变成一只罐子并发布到本地回购。
不幸的是,我是新来的gradle,不能弄清原始项目是如何组成的。
这是我未完成的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任务后,我们有这样的:
,你可以看到gradle这个建立测试和主PROTOS相同的classes目录(红色箭头),在jar中我可以看到包含两个生成的类(而测试应该跳过)。
但主要的问题是,我想使直接编译原文件到相应的源目录(蓝色箭头),后普通构建会做正确的事情......毕竟我们需要这些类的SRC来在业务逻辑中使用它们...
所以我们只需要一个任务,将proto编译到合适的src目录中......仅此而已。
src/main/proto to src/main/java
src/test/proto to src/test/java
当前的项目,因为它位于here。请帮助配置这一点,我很确定很多人以后会需要它...
请问你能分享一个可运行的例子吗?我知道这将是未完成的。 – Opal
肯定在一瞬间 – vach
@Opal https://github.com/vach/sample-gradle-protobuf我会留下最后的工作版本供其他人使用 – vach