将Gradle模块包含在Maven项目中

Ant*_*kov 6 java refactoring build gradle maven

我们有一个使用Maven作为构建系统的大型项目.我们决定在未来的项目中,我们将使用Gradle作为更方便的工具,但我们也希望将Gradle用于我们的遗留项目.

我认为一次从Maven迁移到Gradle会非常痛苦,因为我们在POM文件中有很多代码(我们有非常繁重的构建逻辑).

我知道,Gradle有自动迁移工具(gradle init),但它不能正常工作(我认为这个工具适用于没有特定构建逻辑的小型Maven项目).

所以,这里有一个问题:我可以将Gradle模块包含在Maven项目中,以便通过小步骤进行迁移吗?也许有Maven插件,允许build.gradle作为pom.xml文件处理?

Sta*_*lav 6

有一个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>
Run Code Online (Sandbox Code Playgroud)

现在,当您运行maven时,将调用gradle并执行build.gradle中定义的"doSomething"任务.

显然,您可以根据自己的需要更改任务.

在此示例中,gradle调用将在maven"compile"阶段发生,但可以通过更改元素值轻松更改.

不确定,如何将Gradle构建的工件包含到依赖项中,可能需要将此工件发布到本地maven存储库,以使其可用于您的maven项目.