在Gardle 应用程序插件中 ,您可以通过applicationDefaultJvmArgs传递系统属性:
gradle.build
apply plugin:'application'
mainClassName = "com.mkyong.analyzer.engine.hydra.entryPointForJar"
applicationName = 'analyzer'
distZip {
archiveName 'analyzer-' + version + '.zip'
}
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=logback.xml"]
问题是如何获取logback.xml的logback.xml ?
gradle.build
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=APP_HOME/logback.xml"]
您可以对APP_HOME进行硬编码,但这仅适用于一个平台(Windows或* nix)。
1.解决方案
要修复此问题,请创建一个自定义“ MY_APP_HOME”变量,然后将其替换为doLast
gradle.build
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=MY_APP_HOME/logback.xml"]
startScripts {
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0..')
}
}
注意
该解决方案可在Windows和* nix平台上使用。 经过Gradle 2.0测试
建立它。
gradle distZip
输出量
${project}\build\distributions\${project-name}\bin\analyzer
#!/usr/bin/env bash
##############################################################################
##
## analyzer start up script for UN*X
##
##############################################################################
DEFAULT_JVM_OPTS='"-Dlogback.configurationFile=$APP_HOME/logback.xml"
${project}\build\distributions\${project-name}\bin\analyzer.bat
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem analyzer startup script for Windows
@rem
@rem ##########################################################################
set DEFAULT_JVM_OPTS="-Dlogback.configurationFile=%~dp0../logback.xml"
2.解决方案–自定义启动脚本
这是用于自定义启动脚本的:
gradle.build
task abcStartScripts(type: CreateStartScripts) {
mainClassName = "com.mkyong.analyzer.engine.hydra.entryPointForJar"
classpath = startScripts.classpath
outputDir = startScripts.outputDir
applicationName = 'analyzer'
defaultJvmOpts = ["-Dlogback.configurationFile=MY_APP_HOME/logback.xml"]
abcStartScripts {
doLast {
unixScript.text = unixScript.text.replace('MY_APP_HOME', '\$APP_HOME')
windowsScript.text = windowsScript.text.replace('MY_APP_HOME', '%~dp0..')
}
}
}
applicationDistribution.into("bin") {
from(hostingStatStartScripts)
fileMode = 0755
}
参考文献
翻译自: https://mkyong.com/gradle/gradle-application-plugin-app_home-in-applicationdefaultjvmargs/
本文介绍了在Gradle应用程序插件中如何处理APP_HOME系统属性,以确保在Windows和*nix平台上都能正确找到logback.xml。提出了两种解决方案:1. 创建自定义变量'MY_APP_HOME'并替换;2. 自定义启动脚本。内容详细解释了这两个方法的实现和适用性。

424

被折叠的 条评论
为什么被折叠?



