如何使用Gradle使用变量创建pom.xml文件?

时间:2013-10-02 07:40:50

标签: java maven gradle

我想写一个Gradle函数,它创建一个pom.xml文件,其数据(groupId,artifactId,version)作为参数传递。

我创建了以下脚本:

apply plugin: 'maven'
apply plugin: 'java'

def createMainPom(mainDir, groupId, artifactId, version)
{
    pom
    {
        project
        {
            groupId '$groupId' // Error
            artifactId '$artifactId'
            version '$version'
            packaging 'pom'
            name 'New app'
            modules
            {
                module
                {
                    name 'app'
                }
                module
                {
                    name 'integration-tests'
                }
            }
        }
    }.writeTo('$mainDir/pom.xml');
}
[...]

当我运行它时,我在上面标有// Error的位置出现错误:

> No signature of method: java.lang.String.call() is applicable for argument typ
es: (java.lang.String) values: [a]
Possible solutions: wait(), any(), wait(long), split(java.lang.String), find(jav
a.lang.String), count(java.lang.String)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

plugin documentation州:

  

注意:groupIdartifactIdversionpackaging应始终直接在pom对象上设置。

将这些属性从project中移出一个级别会有所作为吗?

答案 1 :(得分:0)

对于字符串变量解析,请使用双引号:

groupId "$groupId"
artifactId "$artifactId"
version "$version"

...

}.writeTo("$mainDir/pom.xml");