提问者:小点点

当我写一个Gradle插件时,我应该影子Kotlin吗


我正在编写一个插件,从现有的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

    放弃新的良善是一种耻辱,但避免以上的罪过可能会更好。

    欢迎推荐!


  • 共1个答案

    匿名用户

    由于您的插件正在替换样板,并且可能不会公开发布,所以将其作为Gradle Kotlin DSL中的脚本插件编写是否有意义?这样,一个足够新的学生就能理解它。