簡體   English   中英

將 Gradle 模塊包含到 Maven 項目中

[英]Include Gradle module to Maven project

我們有使用 Maven 作為構建系統的大型項目。 我們決定在未來的項目中我們將使用 Gradle 作為更方便的工具,但我們也希望在我們的遺留項目中使用 Gradle。

我認為一次從 Maven 遷移到 Gradle 會非常痛苦,因為我們在 POM 文件中有大量代碼(我們有非常繁重的構建邏輯)。

我知道,Gradle 有自動遷移工具(gradle init),但它不能正常工作(我認為這個工具適用於沒有特定構建邏輯的小型 Maven 項目)。

所以,這里有一個問題:我可以將 Gradle 模塊包含到 Maven 項目中以小步遷移嗎? 也許有 Maven 插件,允許將build.gradle視為pom.xml文件?

有一個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 項目。

你可能會發現我的gradle-maven-share插件很有用。 它旨在通過與 gradle 共享 maven 配置來幫助從 maven 遷移到 gradle。

我可能會使用:

<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM