鉴于旧的 Android 库已弃用,我正在将其从 jcenter 迁移到 mavenCentral。所有实际的库模块都是用 Java 编写的,但其中一些模块的测试是用 Kotlin 编写的。
在升级(到 AS 4.1.3、Gradle 6.8.3)之前,生成的 POM 从未包含对kotlin-stdlib
。现在看来,应用kotlin-android
插件会导致生成的 POM 添加它,即使依赖项包含为testImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31"
.
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.4.31</version>
<scope>compile</scope>
</dependency>
</dependencies>
问题:之前生成的 POM 是否错误,因为它应该包含 kotlin 作为编译依赖项,即使它仅用于测试?
或者,我是否需要做一些特殊的事情来排除这种特定情况下的“依赖性”?如果是这样,如果在定义发布时生成 POM,我如何排除它,例如:
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
....
pom {
name = ...
licenses { }
developers { }
scm { }
}
}
}
}
}
或者,这不是一个好的选择,我应该用 Java 重写测试吗?
值得注意的是,删除kotlin-android
插件还会将其作为编译依赖项从 POM 中删除。似乎对生成AAR没有影响;它只是阻止测试运行。
从 Kotlin 1.4 开始,各种 Kotlin Gradle 插件都会自动添加对 kotlin-std 的依赖。看对标准库的依赖.
您可以通过添加来禁用它gradle.properties
:
kotlin.stdlib.default.dependency=false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)