Gradle Application Plugin - APP_HOME dans applicationDefaultJvmArgs
Dans Gardle, lesapplication
plugin, vous pouvez passer les propriétés du système viaapplicationDefaultJvmArgs
:
gradle.build
apply plugin:'application' mainClassName = "com.example.analyzer.engine.hydra.entryPointForJar" applicationName = 'analyzer' distZip { archiveName 'analyzer-' + version + '.zip' } applicationDefaultJvmArgs = ["-Dlogback.configurationFile=logback.xml"]
Le problème est de savoir comment obtenir l'APP_HOME pourlogback.xml
?
gradle.build
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=APP_HOME/logback.xml"]
Vous pouvez coder en dur APP_HOME, mais cela ne fonctionnera que pour une seule plate-forme (Windows ou * nix).
1. Solution
Pour résoudre ce problème, créez une variable personnalisée «MY_APP_HOME» et remplacez-la pardoLast
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
Cette solution fonctionne à la fois sur les plates-formes Windows et * nix. Testé avec Gradle 2.0
Construit le.
gradle distZip
Sortie
${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. Solution - Script de démarrage personnalisé
Ceci est pour le script de démarrage personnalisé:
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 }