如何在两个build.gradle.kts文件之间共享构建配置?

时间:2016-12-09 14:20:44

标签: gradle kotlin gradle-kotlin-dsl

我有两个项目(在一个git存储库中)应该具有相同的

repository {

}
他们build.gradle.kts中的

部分,但完全不相关。

我可以将这个共同部分考虑在内并将其包含在每个build.gradle.kts中吗?怎么样?

4 个答案:

答案 0 :(得分:4)

更新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")

答案 1 :(得分:2)

不知道它是否适用于kotlin,但你可以尝试使用普通的gradle:

<强> lol.gradle

apply plugin: 'java'

repositories {
   mavenCentral()
}

<强>的build.gradle

apply from: 'lol.gradle'

以上工作正常。请注意 lol.gradle 已应用java插件 - 它会添加repositories存在的上下文,因此可以应用。

答案 2 :(得分:1)

我们使用自定义gradle分发中捆绑的init script将我们的企业Nexus存储库应用于每个gradle项目。如果你有很多项目,那值得考虑。

答案 3 :(得分:0)

在每个项目中复制通用配置时,我遇到了类似的问题。通过具有初始化脚本中定义的常用设置的自定义gradle分发解决了该问题。

创建了gradle插件来准备这种自定义发行版-custom-gradle-dist。它非常适合我的项目,例如库项目的 build.gradle 看起来像这样(这是一个完整的文件,包含所有存储库插件,常见的依赖项< / em>等在自定义init脚本中定义):

dependencies {
    compile 'org.springframework.kafka:spring-kafka'
}