maven 多模块项目如何包含 gradle 子项目?
Posted
技术标签:
【中文标题】maven 多模块项目如何包含 gradle 子项目?【英文标题】:How can a maven multi-module project include gradle sub-projects? 【发布时间】:2018-07-11 21:47:58 【问题描述】:我们有一个 Maven 多模块项目,我们希望逐步迁移到一个 gradle 项目。
对于初学者,我只想将几个子项目迁移到 gradle,但将它们作为子项目保留到父 maven-project 构建。
是否有支持/推荐的方法?
对插件的指针,或任何如何最好地做到这一点的建议表示赞赏。
【问题讨论】:
【参考方案1】:不太确定,对于这样的任务是否有一个简单的解决方案。但是您可以查看gradle-maven-plugin,它允许在 Maven 中运行 Gradle 任务。来自插件描述:
要使用插件,只需声明插件并将其绑定到 maven 您选择的生命周期阶段:
<plugin> <groupId>org.fortasoft</groupId> <artifactId>gradle-maven-plugin</artifactId> <version>1.0.8</version> <configuration> <tasks> <!-- this would effectively call "gradle doSomething" --> <task>doSomething</task> </tasks> </configuration> <executions> <execution> <!-- You can bind this to any phase you like --> <phase>compile</phase> <goals> <!-- goal must be "invoke" --> <goal>invoke</goal> </goals> </execution> </executions> </plugin>
现在,当您运行 maven 时,将调用 gradle 并执行 build.gradle 中定义的“doSomething”任务。
显然,您可以更改任务以满足您的需要。
在此示例中,gradle 调用将在 maven 期间发生 “编译”阶段,但这可以通过更改 元素值。
很遗憾,不能说如何在不将 Gradle 模块工件发布到某个本地存储库的情况下共享它。
【讨论】:
【参考方案2】:要将构建的工件安装到您的本地 maven 存储库,只需将 maven plugin for gradle 添加到您的 build.gradle
文件中。然后,在@Stanislav 的 pom.xml 示例中使用 install
任务而不是 doSomething
。
【讨论】:
【参考方案3】:将此添加到您正在尝试构建的 gradle 项目中,
uploadArchives
repositories
mavenLocal()
然后调用 gradle build publishToMavenLocal
这将构建项目/模块并将其推送到本地 maven repo (.m2) 以及生成的 pom 文件。然后你可以将它用作你以前的普通 maven 模块和 pom 文件。
阅读https://proandroiddev.com/tip-work-with-third-party-projects-locally-with-gradle-961d6c9efb02了解更多信息。
【讨论】:
以上是关于maven 多模块项目如何包含 gradle 子项目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在多模块项目中使用 JUnit5 和 SpringBoot2 通过 gradle 而不是 intelliJ 运行测试