0

我想编写一个 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)

我怎样才能解决这个问题?

4

2 回答 2

0

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

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

...

}.writeTo("$mainDir/pom.xml");
于 2013-12-07T21:35:37.003 回答
0

插件文档指出:

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

将这些属性移出一个级别project会有所不同吗?

于 2013-10-05T11:49:13.863 回答