我正在用Java编写一个带有Playframework 2.2的web应用程序。现在我想添加一个小型的独立文本到数据库导入工具,它只包含一个带有main
方法的Java文件:
public static void main(String[] args) {
importTextToDatabase();
}
- 我可以将这个独立的小应用程序与其他web应用程序一起包含吗?
- 我如何在
activator
(或sbt
)中运行它(没有web应用程序)? - 还是为这个应用程序创建第二个项目更好?
我几个月前就想明白了,却忘了。我花了两个小时才想明白。答案是run-main。诀窍是你需要在run-main和它后面的参数周围加引号,否则它会给你一个错误。所以…
如果你有一个类my.package.Main,你将运行它:
play "run-main my.package.Main"
sbt "run-main my.package.Main"
新版本的sbt
需要:sbt "runMain my.package.Main"
适用于Play 2.3
在stage and dist环境中,bin
目录下有一个与项目名称相同的启动脚本。在该脚本中,有一个app_mainclass
变量指定脚本要执行的主类。您可以复制生成的脚本并替换main类变量的定义来运行您自己的main。这样,您就可以使用脚本的其他内置功能来向JVM传递额外的参数、设置调试端口和指定主程序参数。
我最近遇到了非常类似的问题,似乎Play Framework已经解决了这个问题。它在2.5.x版本中工作得很好。我不确定在以前的版本中是否可用。
基本上,执行stage
命令应该生成Linux和DOS/Windows启动脚本(在target/target/universal/stage/bin
目录下)。当您使用选项-h
运行该脚本时,您应该获得所有执行参数。其中之一是:
-main <classname> Define a custom main class
这样你就可以运行独立的应用程序(例如/target/universal/stage/bin/your-app -main com.your.Application),它可以访问与你的Play web服务器相同的库或配置。