我们有一个使用Maven作为构建系统的大型项目。我们决定在未来的项目中,我们将使用Gradle作为更方便的工具,但我们也希望将Gradle用于我们的遗留项目。
我认为一次从Maven迁移到Gradle会非常痛苦,因为我们在POM文件中有很多代码(我们有非常繁重的构建逻辑)。
我知道,Gradle有自动迁移工具(gradle init),但它没有正常工作(我认为这个工具适用于没有特定构建逻辑的小型Maven项目。)
所以,这是一个问题:我可以将Gradle模块包含到Maven项目以便通过小步骤进行迁移吗?也许有Maven插件,允许将build.gradle
视为pom.xml
文件?
答案 0 :(得分: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>
现在当你运行maven时,将调用gradle并执行 build.gradle中定义的“doSomething”任务。
显然,您可以根据自己的需要更改任务。
在此示例中,gradle调用将在maven期间发生 “编译”阶段,但这可以通过更改来轻松更改 元素价值。
不确定,如何将Gradle构建工件包含到依赖项中,可能需要将此工件发布到本地maven存储库,以使其可用于您的maven项目。
答案 1 :(得分:3)
您可能会发现我的gradle-maven-share插件很有用。它旨在通过与gradle共享maven配置来帮助从maven迁移到gradle。
答案 2 :(得分:0)
我可能会使用:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<configuration>
<executable>./gradlew</executable>
<arguments>
<argument>test</argument>
<argument>-i</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
<execution>
<id>install</id>
<phase>install</phase>
<configuration>
<executable>./gradlew</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>