使用Gradle从现有的pom.xml文件中读取信息?

u12*_*123 7 ant gradle

在Ant中,Maven Ant Tasks可用于读取maven属性,如下所示:

<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>
Run Code Online (Sandbox Code Playgroud)

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 

    }
Run Code Online (Sandbox Code Playgroud)

我在build.gradle文件旁边有一个简单的pom.xml文件.但我无法在gradle文档中找到有关此任务的相应ant调用的任何信息.我看过:

http://www.gradle.org/docs/current/userguide/ant.html

有关如何读取ant属性和引用但是这样:

<artifact:pom id="mypom" file="maven-project/pom.xml" />
Run Code Online (Sandbox Code Playgroud)

似乎既不是财产也不是参考.我偶然发现了这个页面:

http://snipplr.com/view/4082/

使用NamespaceBuilder的地方:

 def mvn = groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')
Run Code Online (Sandbox Code Playgroud)

但是当使用这种方法时,我得到:

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
Run Code Online (Sandbox Code Playgroud)

经过一番谷歌搜索我发现:

http://issues.gradle.org/browse/GRADLE-2385

这似乎是相关的,但属性的值仍为null.

Pet*_*ser 3

Gradle 不提供解析 POM 文件的本机支持,但 Groovy 的XmlSlurper使 XML 解析变得简单方便。与 Ant 方法相比,我可能更喜欢这种方法。