[英]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
這不是你的問題的答案,但我遇到了同樣的問題。
我找到的唯一解決方法:不要在Play中安裝模塊! 應用程序,只包括手動使用此模塊的jar。 play-guice.jar
應作為@opensas建議, aopalliance
和com.google.inject
包含在dependencies.yml中作為常規依賴項。
有趣的是,resync依賴項也刪除.svn
文件,所以在調用此命令之前備份它。
當您在生產中運行時,您將重新同步依賴項(通過play deps命令)與Play的本地安裝,或者在某些情況下,您可以預編譯所有內容,然后路徑就不會出現問題。
例如,第二個場景是Heroku的場景。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.