Если вы ищете образец проекта gradle protobuf, посмотрите здесь.
Мне сложно с 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 строит как тестовые, так и основные протосы в один и тот же каталог классов (красные стрелки), в банке я могу видеть, что оба сгенерированных класса включены (в то время как тесты должны быть пропущены).
но главная проблема заключается в том, что я хочу сделать файлы компилировать proto напрямую в соответствующие исходные каталоги (синие стрелки), после чего обычная сборка сделает правильную вещь... В конце концов, нам нужны эти классы в src, чтобы использовать их в бизнес-логике...
Поэтому нам нужна только одна задача, которая компилирует proto в соответствующий каталог src... ничего более.
src/main/proto to src/main/java
src/test/proto to src/test/java
Текущий проект, так как он находится здесь. Пожалуйста, помогите настроить это, я уверен, что многие люди будут нуждаться в нем позже...