Gradleアプリケーションプラグイン– applicationDefaultJvmArgsのAPP_HOME
Gardle、application
pluginでは、applicationDefaultJvmArgsを介してシステムプロパティを渡すことができます。
gradle.build
apply plugin:'application'
mainClassName = "com.example.analyzer.engine.hydra.entryPointForJar"
applicationName = 'analyzer'
distZip {
archiveName 'analyzer-' + version + '.zip'
}
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=logback.xml"]
問題は、logback.xmlのAPP_HOMEを取得する方法です。
gradle.build
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=APP_HOME/logback.xml"]
APP_HOMEをハードコーディングできますが、これは1つのプラットフォーム(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..')
}
}
Note
このソリューションは、Windowsプラットフォームと* nixプラットフォームの両方で機能します。 Gradle 2.0でテスト済み
それを造りなさい。
gradle distZip
出力
${project}uild\distributions\${project-name}innalyzer
#!/usr/bin/env bash ############################################################################## ## ## analyzer start up script for UN*X ## ############################################################################## DEFAULT_JVM_OPTS='"-Dlogback.configurationFile=$APP_HOME/logback.xml"
${project}uild\distributions\${project-name}innalyzer.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.example.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
}