Gradle应用程序插件– applicationDefaultJvmArgs中的APP_HOME

在Gardle 应用程序插件中 ,您可以通过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的logback.xml

gradle.build
applicationDefaultJvmArgs = ["-Dlogback.configurationFile=APP_HOME/logback.xml"]

您可以对APP_HOME进行硬编码,但这仅适用于一个平台(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..')
		}
	}

注意
该解决方案可在Windows和* nix平台上使用。 经过Gradle 2.0测试

建立它。

gradle distZip

输出量

${project}\build\distributions\${project-name}\bin\analyzer
#!/usr/bin/env bash

##############################################################################
##
##  analyzer start up script for UN*X
##
##############################################################################

DEFAULT_JVM_OPTS='"-Dlogback.configurationFile=$APP_HOME/logback.xml"
${project}\build\distributions\${project-name}\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
  }

参考文献

  1. Gradle –应用程序插件
  2. Gradle DSL参考– CreateStartScripts
  3. Gradle DSL参考–应用程序插件

翻译自: https://mkyong.com/gradle/gradle-application-plugin-app_home-in-applicationdefaultjvmargs/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值