【问题标题】:Use Custom gradle plugin module in another module在另一个模块中使用自定义 gradle 插件模块
【发布时间】:2017-02-15 21:51:13
【问题描述】:

我正在开发一个自定义插件,我希望能够在稍后阶段将其部署到存储库中,因此我为它创建了一个独立模块。

在我对其进行任何正式的 TDD 之前,我想手动进行某些探索性测试,因此,我创建了一个使用给定插件的演示模块。

到目前为止,我发现的唯一方法是将插件部署到本地存储库中,然后将其导入另一个模块。但这很繁琐,很容易忘记部署。

我想知道是否有办法更直接地做到这一点。

【问题讨论】:

    标签: java gradle plugins build gradle-plugin


    【解决方案1】:

    更新(2020-09-07):

    可以使用includeBuild("plugin/module") 将模块添加到项目的类路径中,以便应用插件。需要注意的是,如果您想在 settings.gradle[.kts] 上应用它,它还不起作用,正如我在 thread 上发现的那样。

    旧答案:

    我找到的最佳解决方案是将插件模块的文件夹作为 buildSrc 模块(用于本地脚本)的一部分包含在其源集中,例如:

    sourceSets {
        main {
            groovy.srcDirs += "../custom-plugin/src/main/groovy"
            resources.srcDirs += "../custom-plugin/src/main/resources"
        }
    }
    

    这将使您可以像在远程存储库中一样使用插件,而不必每次都部署它。下一个单元测试:)

    【讨论】:

    • 在哪里包括这些?在根部还是在任何块内?
    • buildSrc 模块的 gradle 构建文件的根目录
    【解决方案2】:

    选项 1:

    如果您使用的是 gradle 3.1 或更高版本,则可以使用composite build feature。 像这样构建你的独立模块:gradle build --include-build /path/to/plugin-root

    假设您从应用插件的独立 gradle 项目的根目录运行此命令,这将首先构建插件,然后构建您的独立项目并将刚刚构建的插件应用到它。

    选项 2:

    如果您使用较旧的 gradle 版本(不支持复合构建),您可以将 the maven plugin 应用于您的插件项目。这定义了install 任务,您现在可以通过在插件项目的根目录中运行gradle install 来调用它。 此任务构建您的插件并将生成的 jar 放在本地缓存目录中(在 Linux 上,默认路径是 ~/.m2)。 请注意,每次更改插件代码后,您都必须再次运行gradle install

    现在,要让您的独立项目使用本地插件jar,您需要编辑构建脚本并将mavenLocal() 放在buildscript.repositories 下。确保mavenLocal() 高于repositories 块中的任何其他内容。

    独立项目的 buildscript 块示例:

    buildscript {
        repositories {
            mavenLocal()
            maven {
                url "https://plugins.gradle.org/m2/"
            }
        }
        dependencies {
            classpath "com.mycompany.plugins:my-awsome-plugin:1.0.0"
        }
    }
    

    【讨论】:

    • 选项 2 是我在我试图避免的问题中提到的。选项 1 似乎也很麻烦。 :( 不过谢谢。
    • 我不明白为什么选项 1 看起来几乎一样麻烦。这实际上是一个巨大的进步。每次更改后,您不必再 install 插件。您所要做的就是在演示模块的gradle build 命令中添加一个参数。我个人觉得在开发插件时开始使用composite-build功能后,我能够更快地看到我的更改结果,我的生活总体上会更好:)
    • 对不起,我的意思是反对我在回答中的建议
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2017-03-02
    • 2018-03-13
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多