Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在编写Gradle插件时跟踪Kotlin吗_Gradle_Kotlin_Shadowjar - Fatal编程技术网

我应该在编写Gradle插件时跟踪Kotlin吗

我应该在编写Gradle插件时跟踪Kotlin吗,gradle,kotlin,shadowjar,Gradle,Kotlin,Shadowjar,我正在编写一个插件,从现有的Gradle构建脚本中提取一些样板文件。现有的构建脚本主要是用Groovy和编译Java编写的 为了构建我的插件,我正在使用Gradle Kotlin DSL,我想借此机会也用Kotlin编写插件。这一切都是可行的,但现在我的插件对Kotlin有很大的依赖性——Gradle文档特别推荐 Java和Groovy插件避免了这一点,因为Java和Groovy是Gradle的共享依赖项,但Kotlin并不是共享的前置需求,因此我们必须关注不同插件所需的Kotlin版本之间的潜

我正在编写一个插件,从现有的Gradle构建脚本中提取一些样板文件。现有的构建脚本主要是用Groovy和编译Java编写的

为了构建我的插件,我正在使用Gradle Kotlin DSL,我想借此机会也用Kotlin编写插件。这一切都是可行的,但现在我的插件对Kotlin有很大的依赖性——Gradle文档特别推荐

Java和Groovy插件避免了这一点,因为Java和Groovy是Gradle的共享依赖项,但Kotlin并不是共享的前置需求,因此我们必须关注不同插件所需的Kotlin版本之间的潜在冲突

我想我应该采用以下方法之一,但不清楚是哪一种:

  • 只需将Kotlin的stdlib
    stdlib
    列为标准依赖项,并信任Gradle来解决问题

    这适用于一个插件,但当另一个插件也在使用,但取决于不同的Kotlin时,我是否应该预期会出现问题

  • 为我的插件构建某种uber shadowJar shadowing Kotlin库

    这意味着我写的每一个插件都比需要的大10秒

  • 放弃基于Kotlin的插件,用Java/Groovy重写

    放弃新的善是一种耻辱,但最好是避免上述罪恶


  • 欢迎推荐

    既然您的插件正在取代样板文件,而且可能不会公开发布,那么在Gradle Kotlin DSL中将其作为一个插件编写有意义吗?这样,一个足够新的Gradle应该能够从本机理解它。

    在中提出了这一点,并建议使用Gradle的
    kotlin dsl
    插件自动配置对
    GradleAppi()
    embeddedKotlin()
    版本的依赖关系,因此,无论Kotlin版本与Gradle的Kotlin DSL支持捆绑在一起

    我担心这可能会引入对使用Kotlin DSL的调用脚本的依赖,但我已经使用Groovy脚本进行了测试,并且能够使用我的插件。我假设它仍然依赖于支持Kotlin DSL的Gradle版本,即4.0+