如果您正在尋找樣本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