簡體   English   中英

如何在不引用絕對路徑的情況下引用播放框架第三方模塊?

[英]How do I reference play framework third party modules without referencing an absolute path?

這是我的情況。 我有一個使用guice模塊的播放應用程序。 為了使用guice模塊:

  • 我用play install guice安裝它。 這將它安裝在$PLAY_HOME/modules ,這對我來說很好。 我不想以任何方式編輯模塊文件。
  • 然后我在我的dependencies.yml聲明了這個模塊: - play -> guice 1.2
  • 在我的應用程序中,我運行了play dependencies ,這可以很好地恢復模塊並創建一個引用guice模塊的modules/guice-1.2文件。

問題是該文件的內容類似於以下內容: /some-absolute-path/play-1.2.x/modules/guice-1.2

在本地開發工作時,這很好。 但是,當我想轉移到生產服務器時,使用不同的Play安裝! (即使用不同的絕對路徑)它顯然會失敗。

那么解決這個問題的最佳方法是什么?

現在,我已經在application.conf文件中聲明了這樣的模塊: module.guice=${play.path}/modules/guice-1.2 不幸的是, ${play.path}魔法似乎不適用於那些生成的文件。

順便說一句,我使用Play版本1.2.3!

您應該在dependencies.yml文件中嘗試使用$ {application.path},就像在此示例中一樣

require:
    - play -> crud
    - provided -> DateHelper 1.0 
repositories: 
    - provided: 
        type:       local 
        artifact:   "${application.path}/jar/[module]-[revision].jar" 
        contains: 
            - provided -> * 

看到這個問題: 如何在Play中將本地jar文件指定為依賴項! 框架1.x

這不是你的問題的答案,但我遇到了同樣的問題。

  • 我不想調用resync對生產的依賴。
  • 我不想問我的團隊成員,安裝特殊模塊。
  • 我不想提交包含模塊位置的絕對路徑的文件。

我找到的唯一解決方法:不要在Play中安裝模塊! 應用程序,只包括手動使用此模塊的jar。 play-guice.jar應作為@opensas建議, aopalliancecom.google.inject包含在dependencies.yml中作為常規依賴項。

有趣的是,resync依賴項也刪除.svn文件,所以在調用此命令之前備份它。

當您在生產中運行時,您將重新同步依賴項(通過play deps命令)與Play的本地安裝,或者在某些情況下,您可以預編譯所有內容,然后路徑就不會出現問題。

例如,第二個場景是Heroku的場景。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM