Java 在另一个模块中使用自定义gradle插件模块

Java 在另一个模块中使用自定义gradle插件模块,java,gradle,plugins,build,gradle-plugin,Java,Gradle,Plugins,Build,Gradle Plugin,我正在开发一个自定义插件,希望能够在以后的阶段将其部署到存储库中,因此我为它创建了一个独立的模块 在我对它进行任何正式的TDD之前,我想手动进行某些探索性测试,因此,我已经创建了一个演示模块,它使用中给定的插件 到目前为止,我找到的唯一方法是将插件部署到本地存储库中,然后将其导入到另一个模块中。但这非常繁琐,很容易忘记部署它 我想知道是否有更直接的方法来实现这一点。更新(2020-09-07): 可以使用includebild(“plugin/module”)将模块添加到项目的类路径中,以便应用

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

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

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

我想知道是否有更直接的方法来实现这一点。

更新(2020-09-07): 可以使用
includebild(“plugin/module”)
将模块添加到项目的类路径中,以便应用插件。有一个警告,如果您想将其应用于
settings.gradle[.kts]
,它还不起作用

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

sourceSets {
    main {
        groovy.srcDirs += "../custom-plugin/src/main/groovy"
        resources.srcDirs += "../custom-plugin/src/main/resources"
    }
}
这将允许您像在远程存储库中一样使用插件,但无需每次都部署它。下一个单元测试:)

选项1: 如果您使用的是gradle 3.1或更高版本,则可以使用。 像这样构建独立模块:
gradlebuild——包括Build/path/to/pluginroot

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

备选案文2: 如果您使用的是较旧的gradle版本(不支持复合构建),则可以应用于插件项目。这定义了
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看起来那么麻烦。它实际上是一个巨大的改进。在每次更改后,你不必再
安装插件了。你所要做的就是在演示模块的
gradle build
命令中添加一个参数。我个人觉得在我开始使用compo之后网站构建功能在开发插件时,我可以更快地看到更改的结果,我的生活通常也会更好:)对不起,我的意思是反对我在回答中提出的建议,在哪里包括这些?位于
buildSrc
模块的gradle生成文件的根目录或任何块的内部