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

Java 如何使用Gradle应用程序插件传递对分发主目录的引用?,java,gradle,plugins,home-directory,Java,Gradle,Plugins,Home Directory,我正在使用Gradle应用程序插件,我想创建一个发行版,其中包含app home文件夹中的conf目录。这个目录应该包含几个配置文件。e、 g.java.util.logging属性等。要指向我的配置文件,我应该传递jvm属性-Djava.util.logging.config=…,这里我需要对应用程序安装目录的引用。脚本似乎将此路径设置为APP\u HOME变量。但有一个问题:我无法将类似于$APP_HOME的内容传递到defaultJvmOpts属性,因为有两种脚本(win和nix),而且美

我正在使用Gradle应用程序插件,我想创建一个发行版,其中包含app home文件夹中的conf目录。这个目录应该包含几个配置文件。e、 g.java.util.logging属性等。要指向我的配置文件,我应该传递jvm属性
-Djava.util.logging.config=…
,这里我需要对应用程序安装目录的引用。脚本似乎将此路径设置为APP\u HOME变量。但有一个问题:我无法将类似于
$APP_HOME
的内容传递到defaultJvmOpts属性,因为有两种脚本(win和nix),而且美元符号是无条件转义的


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

Luke Daley在Gradle论坛上发布了对该问题的答案: :

您必须增加开始脚本

这里有一个例子:

谢谢他的帮助

因此,我在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"')
    }
}
CreateStartScripts startScripts=project.startScripts
startScripts.with{
多拉斯特{
unixScript.text=unixScript.text.replaceFirst('(?)?