2013-03-27 69 views
11

我有一個Eclipse中的現有項目(我們稱之爲「NotPlayProj」),它有很多java代碼仍在開發中。我用play 2.1.0做了一個新的eclipse項目(我們稱之爲「PlayProj」)。我的目標是在PlayProj中使用來自NotPlayProj的代碼,並且Eclipse和Play編譯器都會注意到任一項目中的更改。在Eclipse中使用多個項目與Play框架2.1.x

如果我進入PlayProj的屬性並通過Project選項卡添加NotPlayProj,那麼方法完成和包含在eclipse中工作,但Play編譯看不到結果。我看過Play模塊,而那些模塊似乎並沒有做到我想要的。

有什麼辦法可以做到這一點,理想情況下不需要修改NotPlayProj?

編輯--- 我查看了http://www.playframework.com/documentation/2.0/SBTDependencies,它顯示瞭如何將NotPlayProj中的jar導出到PlayProj/lib目錄中,但這需要每次NotPlayProject更改時手動導出。我懷疑託管依賴項部分應該涵蓋這一點,但我以前從未使用過SBT,因此可能缺少一些基本的東西。

+0

你讀過這篇文章,也許它有幫助:http://stackoverflow.com/questions/10226919/reload-app-on-custom-file-change-in-playframework – adis 2013-03-29 21:22:19

+0

感謝您參考adis。這不是我所需要的,但是它在一般的場地。我想我需要從頭開始學習。 – 2013-04-01 22:35:22

+0

這是你想要做什麼http://stackoverflow.com/questions/10090829/how-to-reference-a-different-java-project-in-eclipse? – th3byrdm4n 2013-04-02 04:33:37

回答

2

您需要的是持續集成。

看看Jenkins:http://jenkins-ci.org/ 您應該設置持續集成服務器並自定義您需要的構建。

例: 你有你的PlayProj在某些服務器上運行,它需要能夠使用一些最新的類從名爲NoPlayProj其他項目。

重建是必須的,諸如宕機時間零等事情很難實現(至少我不認爲這是你要求的)。 你需要與詹金斯自動化的步驟是:

1 - 構建和部署的NoPlayProj的最新版本,它位於一些repositorium

2 - 構建和部署的PlayProj的最新版本,它位於一些並且還包含您上次提交的內容,您更新了存在的依賴關係NoPlayProj

在Jenkins中可以配置非常複雜的構建和部署指令。這應該會加快你的速度。 另外一個建議是如果可能的話,這兩個項目都會變成mavenize,這會幫助你更容易地管理依賴項。

只是爲了澄清一件事,你說:My goal is to use code from NotPlayProj in PlayProj and have both Eclipse and the Play compiler notice changes in either project.

那麼在您執行建立將依賴於你想,只要你更新依賴你提交代碼之前做什麼的順序。

最後一件事,如果你不想部署你,你不必這樣做,你可以創建Jenkins作業,只用你建立的方式。通過Jenkins,你可以做很多事情,你也可以執行一些你自己的幫助腳本,這些腳本可以爲你提供額外的功能。

我希望這是有用的。

1

爲了讓Eclipse在使用PlayProj時看到NotPlayProj的變化,這足以改變PlayProj的配置。屬性 - > Java構建路徑 - >項目 - >將NotPlayProj添加爲依賴項。

有沒有簡單的方法讓Play編譯器處理依賴關係,直到你將它打包爲jar。考慮配置簡單的ant任務(外部工具配置 - > Ant構建),它將複製你的jar文件。任務可以通過按下鍵或按鈕來觸發。

對於託管依賴項,每次在NotPlayProj中進行更改時,都必須手動重建它。讓Ivy/Maven將依賴項放入本地存儲庫。之後,Play將從您的本地存儲庫中獲取最新的快照。

兩種方法都需要一些努力。也許你可以看看運行Play的Python腳本,也許它足以在執行播放開始時用NotPlayProj擴展類路徑