将 $ 字符传递给 Gradle 启动脚本(应用程序插件)

Pass $ character to Gradle start scripts (Application plugin)

我有一个使用 Application 插件的 Gradle 构建脚本,我想将包含 $ 字符的字符串作为 JVM 参数传递,但我不能,因为它总是转换为 $ 字符序列...

这是我的配置:

application {
    mainClass = 'example.Main'
    application.applicationDefaultJvmArgs = ['-javaagent:$APP_HOME/lib/agent.jar']
}

但是在启动脚本中我得到:

DEFAULT_JVM_OPTS='"-javaagent:$APP_HOME/lib/agent.jar"'

因此 \ 它不起作用,我需要值为 -javaagent:$APP_HOME/lib/agent.jar。我尝试的所有方法都得到了相同的结果(使用插值,将 $ 作为 \u0024 传递,等等)。

我在这个 answer 中找到了解决相关问题的方法。有问题的代码如下:

startScripts {
    doLast {
        unixScript.text = unixScript.text.replace('\$APP_HOME', '$APP_HOME') 
        //do something like this for Windows scripts if needed too
    }
}