Gradleアプリケーションプラグイン - applicationDefaultJvmArgs内のAPP__HOME

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
  }