目前,我的项目缺少在gradle.properties上声明的一些路径,这些路径是:
M_HOME=/home/<USER>/Manager
JAVA_HOME=/opt/jdk1.8.0_191
在build.gradle中,我负责任务的编辑和移动将要在buildRpm任务中引入的shell脚本,并使用位于ProjectDir/src/main/resources/template
我的脚本任务如下:
def mHome = project.findProperty('M_HOME')
def javaHome = project.findProperty('JAVA_HOME')
task createScript(type: Copy, dependsOn: build){
description = "Create a setvar script"
doLast{
from 'src/main/resources/template'
include 'setvar.sh.template'
expand([
M_HOME: 'mHome',
JAVA_HOME: 'javaHome'
])
// into 'out/scripts'
}
}
然后将文件放入ProjectDir/out/resources/main/template
然后在我的buildRpm的构建任务中是以下内容(不会放置所有代码):
task buildRpm(type: Rpm, overwrite: true, dependsOn: build)
if(mHome == '' )
throw new GradleException('** Edit the value of your Manager Home in gradle.properties **')
into(Home){
addParentDirs = false
fileMode 0644
dirMode 0755
directory("${Home}/${ packageName }")
directory("${Home}/${ packageName }/lib")
directory("${Home}/${ packageName }/config")
directory("${Home}/${ packageName }/bin")
directory("${Home}/${ packageName }/logs", 0777)
from('out/resources/main/template/') {
into "${ packageName }/bin"
rename 'setvar.sh.template', "setvar.sh"
fileMode 0755
}
(packageName和Home已声明且为函数)
然后将脚本放在/opt/ToolDir/bin
但是,脚本的外观与模板完全相同(不带.template扩展名),并且两个变量都位于该模板中并且未经修改
M_PATH=${M_HOME}
JAVA_HOME=${JAVA_HOME}
如果变量为null,则包含mHome的if语句会引发异常,因此build.gradle正在读取变量,而我的问题是gradle是否确实使用gradle.properties中声明的变量替换了文件中的变量。
或者可能是我在shell脚本中错误声明了变量