【发布时间】:2021-03-29 03:56:29
【问题描述】:
鉴于旧版 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-java 插件自动将 kotlin-std 添加到依赖项的投诉,也许 kotlin-android 插件也是如此。应该有一个选项来禁用这种自动添加依赖项。您可能需要查看文档。也许就是这样:kotlinlang.org/docs/…
-
@MarkRotteveel
kotlin.stdlib.default.dependency=false正是 我的要求,谢谢。如果您发布它,我会接受它作为答案