如何使用Gradle应用程序插件传递对分发主目录的引用?

时间:2014-08-10 09:16:26

标签: java gradle plugins home-directory

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

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

1 个答案:

答案 0 :(得分: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"')
    }
}

它有效!希望以后这些功能会被添加到插件中。