gradle - 未解决的参考:sourceSets - Gradle Kotlin DSL in another file
问题描述
在 Gradle (Groovy) 中,我曾经这样做来配置源集:
build.gradle
:
apply plugin: 'java'
apply from: 'gradle/test.gradle'
gradle/test.gradle
:
sourceSets {
unitTest {
compileClasspath += main.output
runtimeClasspath += main.output
}
}
然后我会使用unitTest
源集来创建任务。
当我尝试在 IntelliJ 中为 Gradle KTS 做同样的事情时:
build.gradle.kts
:
plugins {
java
}
apply(from = "gradle/test.gradle.kts")
gradle/test.gradle.kts
:
sourceSets {
create("unitTest") {
// Do configurations
}
}
如果失败并出现Unresolved reference: sourceSets
错误。
我怎么能在 Kotlin Gradle 中做同样的事情?
解决方案
它与 Unresolved reference 的重复:Gradle Kotlin DSL 的 sourceSets
使用单独的 gradle 文件时不能直接引用 sourceSet。从参考答案:
由于插件在同一个构建脚本中被强制应用,Gradle 无法知道插件被应用,因此无法生成允许访问源集的扩展函数。
如前所述,您可以使用project.the<SourceSetContainer>()
create()
可以使用创建新的 sourceSet方法。
project.the<SourceSetContainer>().create("unitTest")
推荐阅读
- regex - 如何根据字符串中的日期格式设置正则表达式?
- angular - 如何使用 post url 从外部系统将数据传递给 Angular?
- powerbi - Power BI Gauge 以百分比形式显示值出现的次数
- python - 进行聚合、求和和过滤时方括号的用途
- bootstrap-4 - Bootstrap 4 上的行换行
- r - show.legend = FALSE 被 geom_text 覆盖
- java - 为什么我使用 System.in.read() 插入的数字与输出的数字不匹配?
- kotlin - 如何更改代码使其位于 1 行
- networking - 如何在 Kubernetes 中启用 default-http-backend 以使 Ingress 正常工作?
- javascript - 使用 LuminousGallery 类时如何注入字幕