我正在尝试构建一个GIT仓库来存储公共协议缓冲区,我正在尝试做的是最小化不同项目中的公共样板代码。
我认为类似于下面的结构,因此,当一个应用程序包含我的源代码作为“git子模块”时,它只能包含“必要的proto +语言”。
rootProject
|-- proto-1
| |--src
| | |-- main
| | |-- proto
| | |-- proto-a.proto
| | `-- proto-a.proto
| |-- Java
| | |-- build.gradle.kts
| |-- Kotlin
| | |-- build.gradle.kts
| |-- JavaScript
| |-- build.gradle.kts
|-- proto-2
| |--src
| | |-- main
| | |-- proto
| | |-- proto-c.proto
| | `-- proto-d.proto
| |-- Java
| | |-- build.gradle.kts
| |-- Python
| | |-- build.gradle.kts
|---- settings.gradle
`---- build.gradle.kts
如果我为每个build.gradle.kts定义protobuf和sourceSets,上面的代码可以很好地工作,例如
protobuf {
generateProtoTasks {
all().forEach {
it.builtins {
id("kotlin")
}
}
}
}
sourceSets {
main {
proto {
srcDir("../src/main/proto")
}
}
}
但是,正如您所看到的,上述代码在build.gradle.kts中重复。如果我可以在根页面build.gradle.kts中设置上述代码,我认为使用起来会非常简单。
这是我当前根项目的build.gradle.kts。(当然,这是不完整的)
一个二个一个一个
1条答案
按热度按时间sqyvllje1#
这是Gradle convention plugins的使用情形。
您可以在included builds或
buildSrc
中定义它们。使用常规的buildscript语法,将那些使用protobuf的项目中需要的所有逻辑移到约定插件中。
现在您可以通过插件块将约定插件应用到您的构建中。