Playframework应用程序包括一个独立的主应用程序



我正在用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运行它:

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服务器相同的库或配置。

相关内容

  • 没有找到相关文章

最新更新