我正在编写一个插件来从现有的 Gradle 构建脚本中提取一些样板。现有的构建脚本主要用 Groovy 编写并编译 Java。
为了构建我的插件,我使用了 Gradle Kotlin DSL,我想我也会借此机会在 Kotlin 中编写插件。这一切都有效,但现在我的插件对 Kotlin 有很大的依赖 - Gradle 文档特别建议最小化外部库。
Java 和 Groovy 插件避免了这种情况,因为 Java 和 Groovy 是与 Gradle 共享的依赖项,但 Kotlin 不是共享的先决条件,因此我们必须担心不同插件所需的潜在冲突 Kotlin 版本。
我认为我应该采用以下方法之一,但不清楚哪种方法:
只需将 Kotlin
stdlib
列为标准依赖项并信任 Gradle 即可解决问题。这适用于一个插件,但是当另一个插件也被使用但取决于不同的 Kotlin 时,我是否应该预料到会出现问题?
为我的插件构建某种 uber shadowJar 阴影 Kotlin 库
暗示我这样写的每个插件都会比必要的大 10 MB。
放弃基于 Kotlin 的插件并用 Java/Groovy 重写
放弃新的善良将是一种耻辱,但可能更好地避免上述罪恶。
欢迎推荐!