当前位置: 首页 > 知识库问答 >
问题:

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

商宏爽
2023-03-14

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

    洪涵亮
    2023-03-14

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

     类似资料:
    • 当另一个手风琴打开时,我必须关闭手风琴。我一次只能显示一个手风琴打开。目前,手风琴允许您一次打开多个面板。如果我打开一个选项卡,然后打开另一个选项卡,两个选项卡将同时打开。我只能显示一个。你能帮我吗?

    • 正如你所看到的,我做的每件事都是正确的,但它仍然给我带来了错误。我在另一台计算机上测试了我的代码,它起作用了!我甚至从我的电脑上删除了android studio,Gradle和SDK manager并重新安装它们,但它仍然给我错误。我该怎么修好它?

    • 下面的代码使用在首选项UI中显示的复选框控件。 我希望一个名为的函数可以在我选中的复选框控件时启动,我该怎么做?

    • 问题内容: 我有一个要连接到MySQL数据库的应用程序。它在半夜断开连接,然后喷出有关连接的信息,并且JDBC在X秒内没有收到消息。 在进行任何需要与SQL Server通信的操作之前,我先打电话给我。 这是我的方法: 在该方法中,我将密码等信息放入字符串中,然后以标准JDBC方式创建连接。 然后我调用此方法: 我可以对这两种方法进行哪些更改以适应丢失的连接? 问题答案: 这不是检索连接的正确方法

    • 我不知道如何在带有kotlin DSL的gradle构建中使用shadow插件。所有文档都使用groovy dsl。 这是build.gradle.kts的内容: 这是的内容 但是当我尝试进行 时,我收到此错误: 我认为这很奇怪,因为我已经在参数中输入了应用程序主类。 我试着加上这个: 但是当我尝试使用此选项构建时,它抱怨它找不到类型。 我到底做错了什么?

    • 问题内容: 我有一个可以为其创建一个(或多个)实例的实例。我正在使用Servlet环境,并且已经将一个EntityManagerFactory连接到Servlet(通过Servlet上下文),该Servlet在Servlet的生命周期中(因此,对于所有用户)都共享。 我可以执行以下操作之一: 在我的Servlet的生存期内创建一个EntityManager(例如,在所有用户之间共享) 为每个用户创