【问题标题】:How to create a custom sbt task that sets java options before running the app如何在运行应用程序之前创建一个设置 java 选项的自定义 sbt 任务
【发布时间】:2016-09-19 17:33:29
【问题描述】:

我想要一个新的sbt任务runDev,相当于先设置一个系统属性,然后运行run

sbt '; set javaOptions += "-Dlogback.configurationFile=logback-dev.xml" ; run'

如何在 sbt 中做到这一点?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:
    lazy val runDev = taskKey[Unit]("Run with custom java options")
    
    fork in runDev := true
    javaOptions in runDev += "-Dlogback.configurationFile=logback-dev.xml"
    
    fullRunTask(runDev, Compile, "mainClass")
    

    【讨论】:

    • 我更新了示例。它打印一个当前值为 javaOptions 的日志消息。 fork 选项是一个重要的选项 - 运行将存在于具有指定参数的分叉 JVM 中。
    • 您的新版本还设置了纯sbt run 的选项——我一直在寻找仅在运行sbt runDev 时添加的选项
    • 对不起,请检查另一个版本。
    • 不错!这似乎有效。 “任务分叉”是关键。
    • 这个最新版本恐怕也不能用了——调用sbt runDev时系统属性没有设置。
    【解决方案2】:

    一种方式:

    lazy val helloRun = inputKey[Unit]("Run as a task")
    
    helloRun := {
                javacOptions += "-Dlogback.configurationFile=logback-dev.xml"
                (run in Compile).evaluated
             }
    

    【讨论】:

    • 是没有设置javaOptions还是程序没有运行或者有错误?
    • 啊,抱歉——是的,程序运行了,但是没有设置系统属性。
    • 类型!应该是javacOptions。请再试一次。
    • 可悲的是 javacOptions 没有帮助——它将选项发送给 java 编译器,而不是 JVM 运行时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2017-06-15
    • 2014-07-28
    • 2012-01-23
    • 2018-08-10
    • 2011-01-08
    • 2011-12-10
    相关资源
    最近更新 更多