我是Play框架& SBT新手。在Play类路径中添加外部文件夹
在我的Play for Java项目中,在其中一个类中,我需要使用ResourceBundle.getBundle()在我的Play应用程序之外读取属性文件。
我已经能够做到这一点在“播放控制台”模式加入我的build.sbt以下 unmanagedClasspath在运行系统+ =文件(“/ mybundle”)
当我需要运行应用程序在“生产”模式中, 我试图做dist,然后解压缩压缩文件,然后进入“bin”,然后在bin文件夹中运行生成的shell脚本。
我发现我的班级没有阅读该软件包。 (这在“Play Console”模式下很好)。 后来我注意到,在生成的shell脚本来运行游戏,有以下
declare -r app_classpath="$lib_dir/com.foo.abc-web-1.0-SNAPSHOT.jar:$lib_dir/com.foo.abc-common-1.0-SNAPSHOT.jar
我修改行添加我的文件夹,以便它会成为
declare -r app_classpath="/mybundle:$lib_dir/com.foo.simpleproject-web-1.0-SNAPSHOT.jar:$lib_dir/com.foo.abc-common-1.0-SNAPSHOT.jar
然后重新启动我的戏应用程序使用shell脚本,我的应用程序可以正确读取该包。
但是,上述工作必须手动完成,我想将其外部化。
我想解决的是以下几点: 1.有什么办法让我在build.sbt中指定的bundle文件夹可以在play dist中重用吗?
或者,如果以上是不可能的,玩DIST期间,有没有什么办法来指定,所以我的文件夹(即“/ mybundle”)将如上加入app_classpath?
有没有什么办法可以在我的build.sbt中的“Play控制台”模式中将文件夹外化?
BTW我也试图调用脚本文件,即 ./simpleproject -classpath“/ mybundle” 但它产生“坏的应用程序路径:-cp”当追加-classpath错误。 同样的情况下,我用-cp替换-classpath。
任何人都可以在上面提供建议吗?先进的谢谢你。
碰巧在我的情况下,分发捆绑文件不是一个选项。 软件包文件将由SCM管理,根据环境的不同,文件夹路径也会不同。 由于要求对所有env使用相同的分配,因此我发现是否可以将该分发包的文件夹路径外部化。 谢谢你的帮助,詹姆斯。 – Simon2014
对于我在Compile + = file(“/ mybundle”)中添加非托管资源目录没有解决问题 /mybundle没有显示在app_classpath =“...” 老实说,这是一个非常令人沮丧的事情,这样一个简单的任务是在这样一个巨大的痛苦中。 sbt中有半打classpath设置,它们都没有帮助 –