На данный момент в моем проекте просто отсутствуют пути, объявленные в gradle.properties:
M_HOME=/home/<USER>/Manager
JAVA_HOME=/opt/jdk1.8.0_191
А в build.gradle у меня есть задача редактирования и перемещения сценария оболочки, которая будет представлена в задаче buildRpm, и скомпилируйте пакет RPM со сценарием, расположенным в 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}
Оператор if, содержащий mHome, выдает исключение, если переменная имеет значение null, поэтому build.gradle читает переменные, и мой вопрос заключается в том, заменяет ли gradle переменные в файлах переменными, объявленными в gradle.properties.
А может, это мои переменные в скрипте оболочки, плохо объявленные