2011-10-10 77 views
38

我一直在尋找Gradle,看起來很有趣。我認爲能夠使用除XML之外的其他語言編寫腳本非常酷,並且我不清楚polyglot Maven POM文件是否仍然是可行的選項。從Maven 2/3遷移到Gradle

我正在使用Maven 2.2.1作爲構建工具的項目。這個項目:

  • 是多模塊
  • 用途(也是我們自己)的插件
  • 依賴於Artifactory的代理庫

是否有任何的經驗在那裏從Maven來搖籃遷移?陷阱,痛點,角落案件?任何經驗都是非常受歡迎的。

回答

34

從Maven到Gradle的遷移並不像從Ant到Maven那麼容易(至少目前是這樣)。你可以很容易地reuse Ant scripts,並讓他們在您的Gradle構建中成爲一等公民。 deep import of Maven builds也有Gradle roadmap的任務。

到目前爲止,我將兩個企業Maven構建遷移到了Gradle。他們都是使用標準Maven插件的多模塊項目。我基本上重寫了構建Gradle的方式,至少需要一些關於Gradle的知識。根據我的經驗,您可以輕鬆獲得在Gradle中運行的相同構建。 Gradle並沒有真正把你放在這裏,而且相當靈活。一路上,您可能會發現自己必須編寫一個不存在的自定義插件,具體取決於您使用的Maven插件。但是,那裏已經有wide breath of plugins了。到目前爲止,我還沒有碰到真正的障礙。即使Gradle文檔相當不錯,您可能會發現自己正在閱讀大量的Gradle論壇帖子,以找到解決其中一個問題的解決方案。部分標準Maven功能不支持開箱即用provided範圍或WAR inplace。但是,它有簡單的方法。我沒有使用Artifactory存儲庫。我處理的是Nexus存儲庫。據我所知,Gradle傢伙雖然對Artifactory有很好的支持。 編輯: JFrog提供了一個Artifactory Gradle plugin

開始的一個好方法是使用遷移工具Maven2Gradle,讓您從Maven構建生成Gradle腳本。就我個人而言,我還沒有使用它。我開發了與Maven構建並行的Gradle構建,這沒有造成任何麻煩。 Maven把它的 輸出放在target下,Gradle在build下。確保你爲變革做好準備。讓他們嘗試Gradle構建並熟悉該工具。

完全遷移後,您會對構建的可維護性和可擴展性感到非常高興。添加定製構建邏輯非常簡單,您將非常感激您離開XML-land。在表現方面,你也不會退後一步。增量構建功能很好地完成了它的工作。

+2

的搖籃war插件(即在Gradle 1.0-milestone-6中)支持兩種額外的配置:compileProvided和runtimeProvided。 –

+2

不幸的是,如果你的項目沒有應用WAR插件,這不會對你有所幫助。你仍然必須定義你自己的「提供」配置。這仍然是Gradle社區的討論內容,例如看到這個[JIRA門票](http://issues.gradle.org/browse/GRADLE-784)。 –

11

您可能還想通過this write-up瞭解我的移植Maven項目的經驗。

+8

你能否在這裏添加一個總結,以防萬一你的網站出現故障? –

1

您可以隨時更改buildDir'target'下gradle這個,如果你想生成輸出到'target',而不是'build'去下像行家:

buildDir = 'target' 
1

maven2Gradle似乎已經被替換爲能夠運行gradle init從命令行(儘管這是一個相當實驗性的功能)。它似乎可以從Maven項目中進行一些基本的Gradle設置。

8

在目錄中,你有pom.xml中只需運行下面的命令:

gradle這個初始化--type POM

這應該轉換的Maven的pom.xml到的build.gradle