[英]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.