使用 Gradle Kotlin DSL 包含脚本
2022-09-03 01:10:39
我正在尝试在项目中开始将Kotlin DSL与gradle一起使用,但有以下限制:
- 项目有不同的模块(此外:有时这些模块使用不同的插件,但是如果两个项目使用相同的插件,那么插件的版本是相同的)。
- 项目只有内部企业存储库(例如,我们不直接使用jcenter,我们使用代理)。
我们对Groovy有什么看法:
- 一些常见的配置项被排除在单独的脚本之外。请检查下面的示例。
- Gradle 模块包括这些文件。
结果(仅基于我的示例):
- 我们不需要在每个模块中添加相同的代码行。
- 大多数项目仅与依赖项列表有区别。
我试图用Gralde KTS复制相同的内容,并遇到了以下困难:
- 我无法在包含文件中应用插件并在模块中使用它。在这种情况下,我收到编译错误(因为插件类型未添加到模块脚本中)。
- 我无法将常量提取到每个脚本(包括根)中使用它们的常见内容。使用Groovy,我可以使用变量,但是使用Kotlin脚本,我必须在每个模块文件中创建相同的属性。
build.gradle.kts
springBootVersion
- 预编译的脚本插件在没有公共存储库访问权限的情况下无法工作(例如,我无法配置通用脚本文件的想法“只需使用默认的嵌入式Kotlin脚本版本,从这些URL下载所有依赖项:...”)。
包括文件示例:
apply plugin: 'kotlin'
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
Gradle 模块示例:
apply from: "${rootDir}/gradle/include/kotlin-common-include.gradle"
dependencies {
compile project(':my.project.libraries.common')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springBootVersion
}
问题:
- 如何将所有常见常量(如依赖项版本)放入单独的文件中,以便仅使用类似或具有编译时检查之类的方式来包含它们?
springBootVersion
Constants.springBootVersion
- 如何提取应用于包含脚本的插件(以避免Gradle模块脚本过载)?
- 如何在没有公共全局存储库访问权限的情况下使用预编译脚本插件?
其他链接: