2016-11-01 177 views
6

我們有一個使用Maven作爲構建系統的大型項目。我們決定在將來的項目中,我們將使用Gradle作爲更方便的工具,但我們也希望將Gradle用於我們的遺留項目。包含Gradle模塊到Maven項目

我認爲一次從Maven遷移到Gradle會非常痛苦,因爲我們在POM文件中有很多代碼(我們有非常重的構建邏輯)。我知道,Gradle有自動遷移工具(gradle init),但它不能正常工作(我認爲這個工具是用於沒有特定構建邏輯的小型Maven項目)。

所以,這裏是一個問題:我可以包括Gradle模塊到Maven項目遷移與小步驟?也許有Maven插件,允許將build.gradle視爲pom.xml文件?

回答

6

有一個gradle-maven-plugin它允許您從Maven內運行Gradle任務。從插件描述:

使用插件,只需聲明插件,並將其綁定到您選擇的行家 生命週期階段:

<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項目。

3

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