如何在两个 build.gradle.kts 文件之间共享构建配置?
How can I share build config between two build.gradle.kts files?
我有两个项目(在一个 git 存储库中)应该具有相同的
repository {
}
部分在他们的 build.gradle.kts
中,但在其他方面完全无关。
我可以将这个公共部分分解出来并将其包含在各自的 build.gradle.kts
中吗?怎么样?
不知道它是否适用于 kotlin,但是您可以尝试从普通 gradle:
lol.gradle
apply plugin: 'java'
repositories {
mavenCentral()
}
build.gradle
apply from: 'lol.gradle'
以上工作正常。请注意 lol.gradle 应用了 java
插件 - 它添加了存在 repositories
的上下文,因此可以应用。
我们使用捆绑在自定义 gradle 发行版中的 init script 将我们公司的 Nexus 存储库应用于每个 gradle 项目。如果你有很多项目,值得考虑。
更新 在 0.11.0
版本中,删除了 applyFrom(uri)
。
您现在应该改用:
apply {
from("dir/myfile.gradle")
}
旧答案
使用 Groovy 构建脚本,您可以执行类似 apply from: 'dir/myfile.gradle'
的操作,其中 dir/myfile.gradle
是包含共享 repositories
块的文件。
以与 Gradle Script Kotlin 类似的方式(至少与 0.4.1
类似),您可以使用 applyFrom(script: Any)
方法。
build.gradle.kts
applyFrom("dir/myfile.gradle")
如果您需要从子项目中应用它,您可以这样做:
applyFrom("${rootProject.rootDir}/dir/myfile.gradle")
在每个项目中复制通用配置时,我遇到了类似的问题。通过自定义 gradle 发行版解决了它,该发行版具有初始化脚本中定义的通用设置。
创建了一个 gradle 插件来准备此类自定义分发 - custom-gradle-dist。它非常适合我的项目,例如库项目的 build.gradle 看起来像这样(这是一个完整的文件,所有 repository, plugin,常见的 dependencies 等在自定义初始化脚本中定义):
dependencies {
compile 'org.springframework.kafka:spring-kafka'
}
我有两个项目(在一个 git 存储库中)应该具有相同的
repository {
}
部分在他们的 build.gradle.kts
中,但在其他方面完全无关。
我可以将这个公共部分分解出来并将其包含在各自的 build.gradle.kts
中吗?怎么样?
不知道它是否适用于 kotlin,但是您可以尝试从普通 gradle:
lol.gradle
apply plugin: 'java'
repositories {
mavenCentral()
}
build.gradle
apply from: 'lol.gradle'
以上工作正常。请注意 lol.gradle 应用了 java
插件 - 它添加了存在 repositories
的上下文,因此可以应用。
我们使用捆绑在自定义 gradle 发行版中的 init script 将我们公司的 Nexus 存储库应用于每个 gradle 项目。如果你有很多项目,值得考虑。
更新 在 0.11.0
版本中,删除了 applyFrom(uri)
。
您现在应该改用:
apply {
from("dir/myfile.gradle")
}
旧答案
使用 Groovy 构建脚本,您可以执行类似 apply from: 'dir/myfile.gradle'
的操作,其中 dir/myfile.gradle
是包含共享 repositories
块的文件。
以与 Gradle Script Kotlin 类似的方式(至少与 0.4.1
类似),您可以使用 applyFrom(script: Any)
方法。
build.gradle.kts
applyFrom("dir/myfile.gradle")
如果您需要从子项目中应用它,您可以这样做:
applyFrom("${rootProject.rootDir}/dir/myfile.gradle")
在每个项目中复制通用配置时,我遇到了类似的问题。通过自定义 gradle 发行版解决了它,该发行版具有初始化脚本中定义的通用设置。
创建了一个 gradle 插件来准备此类自定义分发 - custom-gradle-dist。它非常适合我的项目,例如库项目的 build.gradle 看起来像这样(这是一个完整的文件,所有 repository, plugin,常见的 dependencies 等在自定义初始化脚本中定义):
dependencies {
compile 'org.springframework.kafka:spring-kafka'
}