【问题标题】:Playframework app including a standalone main applicationPlayframework 应用程序,包括一个独立的主应用程序
【发布时间】:2014-07-15 09:37:55
【问题描述】:

我正在用 Java 编写一个带有 Playframework 2.2 的 web 应用程序。 现在我想添加一个小的独立文本到数据库导入工具,它只包含一个带有main 方法的 Java 文件:

public static void main(String[] args) {
  importTextToDatabase();
} 
  • 我可以将这个独立的小应用程序与 web 应用程序的其余部分一起包含吗?
  • 我怎样才能在activator(或sbt)中运行它(没有webapp)?
  • 或者为这个应用创建第二个项目更好?

【问题讨论】:

    标签: java playframework main playframework-2.2


    【解决方案1】:

    几个月前想通了,然后忘记了。我花了两个小时才重新弄明白。答案是主运行。诀窍是你需要在 run-main 和它后面的参数周围加上引号,否则它会给你一个错误。所以...

    如果你有一个类 my.package.Main 你会运行它:

    play "run-main my.package.Main"

    我相信你也可以使用类似的命令直接从 sbt 运行它:

    sbt "run-main my.package.Main"

    sbt 的较新版本需要: sbt "runMain my.package.Main"

    【讨论】:

    • 太好了,感谢您的两个小时 ;-)。也适用于activator
    【解决方案2】:

    适用于 Play 2.3

    stage和dist环境下,bin目录下有一个与项目名同名的启动脚本。在该脚本中,有一个app_mainclass 变量指定脚本要执行的主类。您可以复制生成的脚本并替换主类变量的定义来运行您自己的main。这样,您就可以使用脚本的其他内置功能将额外的参数传递给 JVM、设置调试端口并指定您的主程序参数。

    【讨论】:

      【解决方案3】:

      我最近遇到了非常类似的问题,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 网络服务器相同的库或配置。

      【讨论】:

        猜你喜欢
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        • 2012-11-03
        相关资源
        最近更新 更多