将Gradle模块包含到Maven项目

时间:2016-11-01 01:31:19

标签: java maven gradle build refactoring

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

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

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

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

3 个答案:

答案 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>

查看原因:https://stackoverflow.com/a/62971663/8650621