2012-04-24 14 views
34

Play框架2.0是一個用於創建Web應用程序的完整堆棧獨立框架。儘管如此,許多人可能需要將其集成到其構建管理中。不幸的是,我沒有找到關於他的很多信息。如何使用Maven依賴關係將Play Framework 2.0集成到Gradle構建管理中?

這是我的用例:我想創建一個使用Scala和Play 2.0的新項目。我不想使用sbt。我想使用Gradle,並且依賴管理應該通過Maven倉庫完成。

我只發現了這個播放模塊:http://www.playframework.org/modules/maven-1.0/home它支持通過Maven進行依賴管理。

我在尋找類似Grails的這些例子: https://github.com/grails/grails-gradle-pluginhttp://grails.org/doc/latest/guide/commandLine.html#4.5%20Ant%20and%20Maven

當然,我可以寫一個叫「玩控制檯命令」腳本/任務。雖然,我不喜歡這個解決方案。有沒有更好的方法來使用Gradle/Maven進行構建管理? 如果這是唯一的解決方案,那麼我會使用Gradle,然後調用Play命令(即內部sbt),對不對?這是否行得通,還是會出現其他問題?

回答

25

這是一個非常棘手的業務。 Play中的SBT用於獲取依賴關係,編譯源文件和模板,以及SBT增量編譯+自動重載功能。我已經編寫了一個build.gradle腳本來解決所有Play 2.0依賴關係,並設置Eclipse或IntelliJ IDEA類路徑,並將其設置爲public here

我會盡量在我有空的時候實現編譯,但這需要一些研究。 當然,您可以添加編譯和運行只需委派給SBT的任務,但需要在SBT和Gradle中描述所有項目依賴項,這將變得難以管理。

編輯:

我已經更新了sample build.gradle文件。我添加了playCompileplayClean任務,這些任務在CI環境中應該有所幫助。該playCompile任務執行以下操作:

  1. 將所有用戶的依賴關係(在compile配置中定義)lib/文件夾。這是有效的,因爲Play會好心地拿起lib/以下的所有罐子。
  2. 執行play compile命令來編譯所有來源,模板和其他Play框架的東西。

您可以分別使用cleanCopyPlayLibsplayClean刪除上述命令的輸出。

請注意,在Windows上似乎存在一個奇怪的問題(bug?),這意味着即使play compile失敗,gradle也會告訴您它已成功。

回覆評論:

我認爲你只是在你的文件丟失

repositories{ 
    mavenCentral() 
} 

。檢查this doc out

+0

感謝這個構建文件。如何繼續?使用「play new」在同一個目錄中創建一個新的Play應用程序? Gradle構建可以添加到CI服務器。儘管如遊戲測試必須通過調用腳本「play test myApp」來運行。這是做這件事的最好方法嗎?我認爲目前這是一個可以接受的解決方案... – 2012-04-25 06:58:08

+0

你必須使用'play new'來製作新的應用程序。然後將gradle文件複製到你的項目目錄並運行'gradle idea/eclipse'來設置你的IDE。使用gradle編譯將無法正常工作,因爲許多源代碼將取決於編譯的Play模板和路由類('views'和'routes'包),您無法使用當前設置進行編譯。你現在仍然必須堅持使用'play'命令來做到這一點。 – rodion 2012-04-25 07:15:13

+0

我做了一些更新。請參閱上面的**編輯**。 – rodion 2012-04-25 14:36:25