我正在编写一个插件,从现有的Gradle构建脚本中提取一些样板。现有的构建脚本主要是用Groovy和编译Java编写的。
为了构建我的插件,我使用了Gradle Kotlin DSL,我想我也可以利用这个机会用Kotlin编写插件。这一切都起作用了,但现在我的插件对Kotlin有很大的依赖性--而且Gradle文档特别建议最小化外部库。
Java和Groovy插件避免了这一点,因为Java和Groovy是与Gradle共享的依赖项,但Kotlin不是共享的前置需求,因此我们必须关注不同插件可能需要的Kotlin版本冲突。
我认为我应该采用以下方法之一,但不清楚哪一种:
>
只需将Kotlin的stdlib
列为标准的依赖项和信任级别,就可以理清事情。
这适用于一个插件,但当另一个插件也在使用但取决于不同的Kotlin时,我是否应该预期会出现问题呢?
为我的插件建立某种uber shadowJar跟踪Kotlin库
这意味着我这样编写的每一个插件都将比需要的大10个MB。
放弃基于Kotlin的插件,重写Java/Groovy
放弃新的良善是一种耻辱,但避免以上的罪过可能会更好。
欢迎推荐!
由于您的插件正在替换样板,并且可能不会公开发布,所以将其作为Gradle Kotlin DSL中的脚本插件编写是否有意义?这样,一个足够新的学生就能理解它。