Gradle不会用gradle.properties变量填充文件

时间:2019-03-22 17:38:19

标签: java gradle

目前,我的项目缺少在gradle.properties上声明的一些路径,这些路径是:

M_HOME=/home/<USER>/Manager
JAVA_HOME=/opt/jdk1.8.0_191

在build.gradle中,我负责任务的编辑和移动将要在buildRpm任务中引入的shell脚本,并使用位于ProjectDir/src/main/resources/template

中的脚本编译RPM软件包。

我的脚本任务如下:

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脚本中错误声明了变量

0 个答案:

没有答案