在 Ant 中,Maven Ant Tasks可用于读取 Maven 属性,如下所示:
<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>
Gradle 中是否有“本机”支持来访问现有物理 pom.xml 文件中的 pom 元素,或者我是否需要在我的 .gradle 文件中执行上述 Ant 方法才能使其工作?
这一页:
http://gradle.org/docs/current/userguide/maven_plugin.html
有关于生成 pom 文件的信息,但这不是我想要的。我试图创建一个相同的 .gradle 文件:
repositories {
mavenCentral()
}
configurations {
mavenAntTasks
}
dependencies {
mavenAntTasks 'org.apache.maven:maven-ant-tasks:2.1.1'
}
task hello << {
ant.taskdef(resource: 'org/apache/maven/artifact/ant/antlib.xml',
uri: 'antlib:org.apache.maven.artifact.ant',
classpath: configurations.mavenAntTasks.asPath)
// what is the gradle syntax for this:
// <artifact:pom id="mypom" file="maven-project/pom.xml" />
// its not a property or a task...
def artifact = groovy.xml.NamespaceBuilder.newInstance(ant,'antlib:org.apache.maven.artifact.ant')
artifact.pom(id:'mypom', file: 'pom.xml')
def text = properties['mypom.version']
println "From pom file: " + text
}
我在 build.gradle 文件旁边有一个简单的 pom.xml 文件。但是我在 gradle docs 中找不到关于此任务的相应 ant 调用的任何信息。我看过:
http://www.gradle.org/docs/current/userguide/ant.html
有关如何阅读 ant 属性和引用的信息,但是:
<artifact:pom id="mypom" file="maven-project/pom.xml" />
似乎既不是属性也不是参考。我偶然发现了这个页面:
使用NamespaceBuilder的地方:
def mvn = groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')
但是当使用这种方法时,我得到:
The AbstractTask.getDynamicObjectHelper() method has been deprecated and will be removed in the next version of Gradle. Please use the getAsDynamicObject() method instead.
From pom file: null
经过一番谷歌搜索后,我发现:
http://issues.gradle.org/browse/GRADLE-2385
这似乎相关,但该属性的值仍然为空。