maven多模块项目如何包括gradle子项目?

时间:2018-02-01 14:22:08

标签: maven gradle build.gradle pom.xml

我们有一个maven多模块项目,我们希望逐步迁移到gradle项目。

对于初学者,我想只将几个子项目迁移到gradle,但将它们作为子项目保存到父maven项目构建中。

是否有支持/推荐的方式?

指向插件的指示,或任何建议如何最好地做到这一点。

3 个答案:

答案 0 :(得分:2)

不确定,对于这样的任务有一个简单的解决方案。但您可以查看允许在Maven中运行Gradle任务的gradle-maven-plugin。来自插件说明:

  

要使用该插件,只需声明插件并将其绑定到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模块工件。

答案 1 :(得分:2)

要将构建的工件安装到本地maven存储库,只需将maven plugin for gradle添加到build.gradle文件即可。然后,在@Stanislav的pom.xml示例中使用install任务而不是doSomething

答案 2 :(得分:0)

将此添加到您要构建的gradle项目中,

uploadArchives {
        repositories {
            mavenLocal()
        }
    }

然后调用gradle build publishToMavenLocal,这将构建项目/模块并将其推送到本地Maven存储库(.m2)以及生成的pom文件。然后,您可以将其用作pom文件的先前常规maven模块。

https://proandroiddev.com/tip-work-with-third-party-projects-locally-with-gradle-961d6c9efb02阅读以了解更多信息。