Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gradle脚本中的嵌套动态属性?_Gradle - Fatal编程技术网

gradle脚本中的嵌套动态属性?

gradle脚本中的嵌套动态属性?,gradle,Gradle,是否可以在gradle构建脚本中使用嵌套属性对全局变量进行分组 如果gradle.properties文件包含 mavenUpload.serverUrl=https://someServer.org/mavenrepository 我可以在诸如${mavenUpload.serverUrl}之类的gradle脚本中使用它吗 // in master gradle.build task uploadArchives { description = "Upload to maven re

是否可以在gradle构建脚本中使用嵌套属性对全局变量进行分组

如果
gradle.properties
文件包含

mavenUpload.serverUrl=https://someServer.org/mavenrepository
我可以在诸如
${mavenUpload.serverUrl}
之类的gradle脚本中使用它吗

// in master gradle.build
task uploadArchives {
    description = "Upload to maven repository '${mavenUpload.serverUrl}'."

    // call all uploadArchives in the sub projects
    dependsOn { subprojects.uploadArchives }
}
甚至可以像这样动态创建嵌套属性吗

ext {
    mavenUpload {
        serverUrl='https://someServer.org/mavenrepository'
        login='myUsername'
        password='myTopSecretPassword'
    }
}
在gradle有没有类似的方法

我目前的解决方法是使用下划线“uu”而不是点”

我在gradle 2.13中的尝试

ext {
    // works as expected
    myglobal='my global value'

    // error :-(
    myGlobalNested1 {
        myNested='my nested value'
    }

    // error :-(
    myGlobalNested2.ext {
        myNested='my nested value'
    }

    // error :-(
    myGlobalNested4.ext.myNested='my nested value'

    // error :-(
    myGlobalNested5.myNested='my nested value'

    myGlobalNested3 = new HashMap<String,Object>()      

}

// error :-(
myGlobalNested3.ext.myNested='my nested value'

task demo {
    // works as expected
    ext.mylocal='my local value'

    print """
        myglobal = ${myglobal}
        mylocal = ${mylocal}
        demo.mylocal = ${demo.mylocal}

        myGlobalNested.myNested = ${myGlobalNested.myNested}
    """
}
ext{
//工作如期进行
myglobal='my global value'
//错误:-(
myGlobalNested1{
myNested='my nested value'
}
//错误:-(
myGlobalNested2.ext{
myNested='my nested value'
}
//错误:-(
myGlobalNested4.ext.myNested='my嵌套值'
//错误:-(
myGlobalNested5.myNested='my nested value'
myGlobalNested3=新HashMap()
}
//错误:-(
myGlobalNested3.ext.myNested='my嵌套值'
任务演示{
//工作如期进行
ext.mylocal='我的本地值'
打印“”
myglobal=${myglobal}
mylocal=${mylocal}
demo.mylocal=${demo.mylocal}
myGlobalNested.myNested=${myGlobalNested.myNested}
"""
}
[更新2016-06-11@opal]


此脚本未编译。带有
//错误:-(
导致编译错误的部分也遇到了相同的问题

这是怎么回事

ext {
    parent = ext {
        child = ext {
            grandChild = ext {
                greatGrandChild = "Kourtney"
            }
            grandChildBrother = "Khloé"
        }
        childSister = "Kim"
    }
}
然后

task demo {
    print """
            child sister is ${this.ext.parent.childSister}
            grand child brother is ${this.ext.parent.child.grandChildBrother}
            great grand child is 
            ${this.ext.parent.child.grandChild.greatGrandChild}
    """
}

祝你好运!

我不建议在另一个函数中使用
ext
。这会导致gradle出现一些非常奇怪的行为。的顶部答案为我们提供了创建嵌套ext变量的正确方法

这将是在gradle中创建嵌套变量的正确方法

ext {
    myarray = [
            name0     : "xx",
            name1     : "xx"
   ]
}

对我来说,这个问题有点不清楚。你能提供一个不起作用的脚本的例子吗?