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リファレンス – アプリケーションプラグイン]