Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在两个build.gradle.kts文件之间共享构建配置?_Gradle_Kotlin_Gradle Kotlin Dsl - Fatal编程技术网

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

如何在两个build.gradle.kts文件之间共享构建配置?,gradle,kotlin,gradle-kotlin-dsl,Gradle,Kotlin,Gradle Kotlin Dsl,我有两个项目(在一个git存储库中)应该具有相同的特性 repository { } 在它们的build.gradle.kts中,但在其他方面是完全无关的 我是否可以将此公共部分分解出来,并将其包含在每个相应的build.gradle.kts中?如何使用?不知道它是否适用于kotlin,但您可以尝试使用plain gradle的等效产品: lol.gradle apply plugin: 'java' repositories { mavenCentral() } apply fr

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

repository {

}
在它们的
build.gradle.kts
中,但在其他方面是完全无关的


我是否可以将此公共部分分解出来,并将其包含在每个相应的
build.gradle.kts
中?如何使用?

不知道它是否适用于kotlin,但您可以尝试使用plain gradle的等效产品:

lol.gradle

apply plugin: 'java'

repositories {
   mavenCentral()
}
apply from: 'lol.gradle'
build.gradle

apply plugin: 'java'

repositories {
   mavenCentral()
}
apply from: 'lol.gradle'

上面的工作很好。请注意,lol.gradle已经应用了
java
插件-它添加了
存储库
所在的上下文,因此可以应用。

我们在自定义gradle发行版中使用一个捆绑包,将我们的corporate Nexus存储库应用于每个gradle项目。如果你有很多项目,这是值得考虑的。

更新版本中,
applyFrom(uri)
被删除

您现在应该使用:

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

旧答案

使用Groovy构建脚本,您可以执行以下操作:
apply from:'dir/myfile.gradle'
其中
dir/myfile.gradle
是一个包含共享
存储库的文件

与(至少使用
0.4.1
)类似,您可以使用
applyFrom(script:Any)
方法

build.gradle.kts

applyFrom("dir/myfile.gradle")
如果需要从子项目中应用它,可以执行以下操作:

applyFrom("${rootProject.rootDir}/dir/myfile.gradle")

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

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

依赖项{
编译“org.springframework.kafka:springkafka”
}