4

我正在使用 Gradle 应用程序插件,我想在应用程序主文件夹中创建包含conf目录的分发。这个目录应该包含几个配置文件。例如java.util.logging属性等。要指向 JUL 我的配置文件,我应该传递 jvm 属性-Djava.util.logging.config=...,在这里我需要一个对应用程序安装目录的引用。脚本似乎将此路径设置为APP_HOME变量。但是有一个问题:我不能像这样传递defaultJvmOpts属性,$APP_HOME因为有两种脚本(win 和 nix),而且美元符号是无条件转义的。

那么,有没有办法将应用程序主目录的引用作为虚拟机参数传递?

4

1 回答 1

1

Luke Daley 在 Gradle 论坛上发布了该问题的答案: http ://forums.gradle.org/gradle/topics/how_to_pass_a_reference_to_distribution_home_directory_using_application_plugin :

您必须增加启动脚本。

这里有一个例子:https ://github.com/ratpack/ratpack/blob/master/ratpack-gradle/src/main/groovy/ratpack/gradle/RatpackPlugin.groovy#L93

感谢他的帮助。

因此,我将以下代码添加到我的末尾build.gradle

CreateStartScripts startScripts = project.startScripts
startScripts.with {
    doLast {
        unixScript.text = unixScript.text.replaceFirst('(?<=DEFAULT_JVM_OPTS=)((\'|\")(.*)(\'|"))(?=\n)',
                '\'$3 "-Dtcproxy.config.url=file:\\$APP_HOME/conf/proxy.properties"\'')
        windowsScript.text = windowsScript.text.replaceFirst('(?<=DEFAULT_JVM_OPTS=)(.*)(?=\r\n)',
                '$1 "-Dtcproxy.config.url=file:%~dp0../conf/proxy.properties"')
    }
}

它有效!希望以后这样的功能将被添加到插件中。

于 2014-08-11T09:33:43.617 回答