【问题标题】:sbt equivalent of maven exec pluginsbt 相当于 maven exec 插件
【发布时间】:2016-03-08 18:46:55
【问题描述】:

使用maven时,可以使用maven exec plugin和mvn exec:java -Dexec.mainClass="com.example.Main"运行任意类的main方法。有没有办法在 sbt 中做到这一点?
具体的用例是我有一个项目通常是一个长期运行的服务,但我也想在同一个项目中有一些快速的命令行实用程序,我可以从 sbt 开始。

【问题讨论】:

    标签: java maven command-line sbt main


    【解决方案1】:
    sbt "run-main full.class.name"
    

    【讨论】:

    • 一个问题。 jvm 不想在 main 方法结束时退出,并且显式使用系统退出被捕获为TrapExitSecurityException。有什么调试建议吗?
    • 非守护线程会导致 jvm 不退出。但就此而言,默认情况下,sbt 在当前 jvm 中运行进程,您不希望 System.exit()。如果你fork in run,那么是的,你可以 System.exit(),否则,你不能。如果你的 main 没有返回,那么你应该自己从循环中中断。
    • 所以没有循环(在 main 中)(它是一个 CLI 工具)。 main 方法运行,返回,然后它只是不退出。我需要打破 SBT 中的某个循环吗?
    • 如果挂起,您的方法不会返回
    • 当然,如果你从命令行运行 sbt "run-main ..." 并且你的主类启动非守护线程,它将阻止 jvm 退出,直到所有非守护线程已经结束了。
    猜你喜欢
    • 2015-02-05
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2011-04-16
    • 2018-04-12
    • 2018-12-25
    相关资源
    最近更新 更多