Gradle createPom似乎没有阅读gradle.properties

时间:2015-05-29 13:59:29

标签: groovy gradle

请注意:虽然我在这个问题中提到了ShadowJar插件,但它仅用于提供完整的上下文。我相信任何Gradle Guru都可以回答这个问题,无论他们对ShadowJar的知识水平如何。

目前,我的Groovy项目是使用以下Gradle构建调用构建的:

  

gradle clean build shadowJar

运行此调用会在build/libs下生成一个打包的胖jar,并在version文件中指定gradle.properties属性。例如,如果gradle.propertiesversion=1.2.3,则上述调用会生成build/libs/myapp-1.2.3.jar

生成的内容是我的应用程序的有效POM。所以我发现了this answer并对其进行了修改以产生:

task createPom << {
    pom {
        project {
            groupId ${group}
            artifactId 'myapp'
            version ${version}
        }
    }.writeTo("build/libs/pom.xml")
}

我的思考groupversion(两者都在gradle.properties中指定)将被注入&#34;并且这应该是在与我的胖罐相同的目录中生成pom.xml

添加createPom任务后,我运行:

  

gradle clean build shadowJar createPom

我收到了这个错误:

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\workspace\blah\myapp\build.gradle' line: 89

* What went wrong:
Execution failed for task ':createPom'.
> No signature of method: java.lang.Object.$() is applicable for argument types: (java.util.Collections$EmptyMap, null) values: [[:], null]
Possible solutions: any(), is(java.lang.Object), wait(), find(), dump(), grep()

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 11.673 secs

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

行:

groupId ${group}
artifactId 'myapp'
version ${version}

不是有效的groovy,应该是:

groupId "${group}"
artifactId 'myapp'
version "${version}"