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