我正在使用Gradle应用程序插件,并且我想创建一个包含应用主文件夹内 conf 目录的发行版。该目录应包含几个配置文件。例如java.util.logging属性,等等。为了指向我的配置文件,我应该将jvm属性-Djava.util.logging.config=...
传递给JUL,在这里我需要对应用程序安装目录的引用。似乎脚本将此路径设置为 APP_HOME 变量。但是有一个问题:我无法将$APP_HOME
之类的东西传递给defaultJvmOpts属性,因为有两种脚本(win和nix),而且美元符号是无条件转义的。
那么,有什么方法可以将对应用程序主目录的引用作为虚拟机参数传递?
参考方案
卢克·戴利(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"')
}
}
而且有效!希望以后将此类功能添加到插件中。
Gradle:如何使用并行项目配置多项目设置 - java我们有一个像这样的旧项目:. ├── customizationProject │ ├── ejb │ └── services ├── projectA │ ├── ejb │ └── shared ├── projectB │ └── ejb └── projectC ├── ejb └── services 这个想法是,custom…
Java-如何将此字符串转换为日期? - java我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…
gradle ignoreFailures测试属性 - java我的build.gradle文件如下所示:apply plugin: "java" ... test { ... ignoreFailures = "$ignoreFailureProp" } 和一个gradle.properties与ignoreFailureProp=false 当执行gradle clean bu…
Java:正则表达式模式匹配器是否有大小限制? - java我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)
Java:线程池如何将线程映射到可运行对象 - java试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …