Ответ 1
Если я не неправильно понимаю ваш вопрос, это довольно просто решить. Если вы не хотите различать свои собственные и сгенерированные источники, вам просто нужно добавить set generateFileBaseDir, как этот generateProtoTasks.generatedFilesBaseDir = 'src'
Таким образом, весь файл сборки выглядит следующим образом:
// ...
protobuf {
// Configure the protoc executable
protoc {
// Download from repositories
artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
}
generateProtoTasks.generatedFilesBaseDir = 'src' // <- that line
generateProtoTasks {
// all() returns the collection of all protoc tasks
all().each { task ->
// Here you can configure the task
}
Чем ваша папка выглядит:
- src/main/java/com/vach/tryout/AddressBookProtos.java
- SRC/главная/Java/COM/вак/проба/Protobuf/Main.java
НО: Это может быть не самая лучшая идея для смешивания генерации с исходным кодом ручной работы. Поэтому мое предложение состояло в том, чтобы сгенерировать исходный код в собственный каталог, например generateSources, и добавить этот каталог в java sourceSet. Файл сборки будет выглядеть так:
sourceSets {
main {
proto {
srcDir 'src/main/proto'
}
java {
// include self written and generated code
srcDirs 'src/main/java', 'generated-sources/main/java'
}
}
// remove the test configuration - at least in your example you don't have a special test proto file
}
protobuf {
// Configure the protoc executable
protoc {
// Download from repositories
artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
}
generateProtoTasks.generatedFilesBaseDir = 'generated-sources'
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')
}
}
Ваш каталог будет выглядеть следующим образом
- SRC/Основной/прото/dtos.proto
- SRC/главная/Java/COM/вак/проба/Protobuf/Main.java
- сгенерированные-источники/Основной/Java/COM/Вак/проба/AddressBookProtos.java
Хорошим побочным эффектом является то, что вы можете игнорировать этот источник сгенерированных источников в конфигурации git. Это всегда хорошая идея не публиковать сгенерированный исходный код.