3

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

repository {

}

在他们的部分build.gradle.kts,但在其他方面是完全不相关的。

我可以将这个共同部分分解并包含在每个部分中 build.gradle.kts吗?如何?

4

4 回答 4

6

更新0.11.0发行版中,applyFrom(uri)被删除。

您现在应该改用:

apply {
    from("dir/myfile.gradle")
}

旧答案

使用 Groovy 构建脚本,您可以执行以下操作:包含共享块的文件apply from: 'dir/myfile.gradle'在哪里。dir/myfile.gradlerepositories

以与Gradle Script Kotlin类似的方式(至少使用0.4.1),您可以使用该applyFrom(script: Any)方法。

构建.gradle.kts

applyFrom("dir/myfile.gradle")

如果您需要从子项目中应用它,您可以执行以下操作:

applyFrom("${rootProject.rootDir}/dir/myfile.gradle")
于 2016-12-10T04:39:14.593 回答
2

不知道它是否适用于 kotlin,但是您可以尝试从普通 gradle 等效:

大声笑.gradle

apply plugin: 'java'

repositories {
   mavenCentral()
}

构建.gradle

apply from: 'lol.gradle'

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

于 2016-12-09T15:31:19.290 回答
1

我们使用捆绑在自定义 gradle 发行版中的初始化脚本将我们的公司 Nexus 存储库应用到每个 gradle 项目。如果您有很多项目,则值得考虑。

于 2016-12-09T20:04:24.173 回答
0

当在每个项目中复制通用配置时,我遇到了类似的问题。通过使用 init 脚本中定义的通用设置的自定义 gradle 分发解决了这个问题。

创建了一个用于准备此类自定义发行版的 gradle 插件 - custom-gradle-dist。它非常适合我的项目,例如库项目的build.gradle看起来像这样(这是一个完整的文件,所有存储库插件、公共依赖项等都在自定义初始化脚本中定义):

dependencies {
    compile 'org.springframework.kafka:spring-kafka'
}
于 2018-10-19T23:41:57.447 回答