我正在为kotlin项目编写gradle构建,我想在多个任务中重用相同的kotlinOptions
。
目前我的构建脚本如下所示,因为kotlinOptions
对于每个任务都是相同的,所以我不想一遍又一遍地编写它们。
compileKotlin {
kotlinOptions {
allWarningsAsErrors = true
freeCompilerArgs = ["-Xjvm-default=enable", "-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
allWarningsAsErrors = true
freeCompilerArgs = ["-Xjvm-default=enable", "-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
compileIntegrationTestKotlin {
kotlinOptions {
allWarningsAsErrors = true
freeCompilerArgs = ["-Xjvm-default=enable", "-Xjsr305=strict"]
jvmTarget = "1.8"
}
}
相反,我只想定义一次,然后在需要时重用该定义。
我还尝试了以下操作(如Alexs answer中的建议)
ext.optionNameHere = {
allWarningsAsErrors = true
freeCompilerArgs = ["-Xjvm-default=enable", "-Xjsr305=strict"]
jvmTarget = "1.8"
}
compileKotlin { kotlinOptions = ext.optionNameHere }
compileTestKotlin { kotlinOptions = ext.optionNameHere }
compileIntegrationTestKotlin { kotlinOptions = ext.optionNameHere }
这会导致以下错误消息:
> Cannot get property 'kotlinOptions' on extra properties extension as it does not exist
答案 0 :(得分:2)
我为我的特定问题找到了解决方案(仅针对kotlin编译部分)。 我希望有一个更通用的方法。尽管这可能会帮助其他人。
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
// ...
}
}
来自kotlin docs。
答案 1 :(得分:0)
您应该可以通过使用其他属性来执行此操作。
ext.optionNameHere = { allWarningsAsErrors = true freeCompilerArgs = ["-Xjvm-default=enable", "-Xjsr305=strict"] jvmTarget = "1.8" }
然后,当您想要拥有它时:
compileIntegrationTestKotlin {kotlinOptions = ext.optionNameHere}
已阅读:Gradle Docs -在其他属性
下