Gradleアプリケーションプラグイン – applicationDefaultJvmArgs内のAPP__HOME
Gardleのhttp://gradle.org/docs/current/userguide/application__plugin.html[アプリケーションプラグイン]では、 `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`の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..')
}
}
それを構築する。
gradle distZip
出力
$ \ {プロジェクト} \ビルド\ディストリビューション\ $ \ {プロジェクト名} \ bin \ analyzer
#!/usr/bin/env bash ############################################################################## ## ## analyzer start up script for UN** X ## ############################################################################## DEFAULT__JVM__OPTS='"-Dlogback.configurationFile=$APP__HOME/logback.xml"
$ \ {プロジェクト} \ビルド\ディストリビューション\ $ \ {プロジェクト名} \ 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
}
参考文献
DSLリファレンス – CreateStartScripts]。
http://gradle.org/docs/current/dsl/org.gradle.api.Project.html#N14272
[Gradle
DSLリファレンス – アプリケーションプラグイン]