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