2015-02-10 91 views
2

我想將maven項目集成到我的gradle構建過程中。雖然我成功地將maven項目(這是一個戰爭覆蓋項目)轉換爲gradle項目,但這樣做有幾個缺點。首先,maven tomcat插件可以輕鬆創建一個帶有嵌入式tomcat實例的可運行jar。我無法找到一個做這項工作的gradle插件。 爲了解決這個問題,我看到了四種不同的方法,我不知道哪一個會是最好的,或者是否存在另一種可能性。用gradle構建maven戰爭重疊項目

  1. 將maven項目轉換爲gradle。正如前面提到的那樣,但是我找不到用這種方法創建帶有嵌入式tomcat的jar的方法。
  2. Maven項目將具有帶有任務執行Maven目標(例如ant.exec)
  3. 我用maven爲我所有的項目(不是一個真正的選擇對我來說)
  4. 使用一個額外的build.gradle maven作爲root項目並執行maven的gradle任務

任何其他想法或建議?

回答

1

,你可以:

  1. 創建使用tomcat embedded
  2. 使用gradle shadow plugin創建Java應用程序
+1

使用org.scaldingspoon.gradle:gradle-waroverlay-plugin和gretty插件的組合,發現了一個更簡單的解決方案。現在我可以用gradle構建我的war-overlay並創建一個包含tomcat服務器,war文件和啓動/停止腳本的存檔。它不會生成可運行的jar,但通過使用腳本很容易管理。 – 2015-02-12 10:53:50

1

可執行尤伯杯罐子的Java應用程序調查了一段時間後,我要回答我自己的問題。我認爲在這個特例中將Maven項目轉換爲Gradle項目並不是最好的方法。我決定使用第二種方法:

war-overlay項目仍然是一個maven項目,但我也爲項目添加了一個gradle.build文件。構建腳本如下所示:

task mvnPackage(type:Exec) { 
    commandLine "${mavenHome}/mvn", 'package' 
} 

task mvnClean(type: Exec) { 
    commandLine "${mavenHome}/mvn", 'clean' 
} 

clean.dependsOn mvnClean 

assemble.dependsOn mvnPackage 

因此,如果我使用gradle作爲構建工具,maven目標將被執行,這完美地工作。

+0

如果使用這種方法,您可能需要在gradle中聲明工件(http://gradle.org/docs/current/userguide/artifact_management.html#N156D1),以便它知道該jar – 2015-02-11 11:14:33

0

我不知道如何可靠,這是,但你也可以實例,並執行一些行家mojos無需行家容器/線束(詳情here

我不知道這是可能的使用Maven tomcat mojo。