首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gradle从现有pom.xml文件中读取信息?

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

Stack Overflow用户
提问于 2012-07-19 09:48:21
回答 4查看 6.4K关注 0票数 7

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

代码语言:javascript
复制
<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>

Gradle中是否有从现有物理pom.xml文件访问pom元素的“本机”支持,还是需要在我的.gradle文件中使用上面的Ant方法来完成这项工作?

本页:

plugin.html

有关于生成pom文件的信息,但这不是我要找的。我已经尝试创建了一个.gradle文件,该文件也是这样做的:

代码语言:javascript
复制
    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 

    }

其中,我有一个简单的pom.xml文件位于build.gradle文件旁边。但我在gradle文档中找不到与此任务相应的ant调用的任何信息。我看过:

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

有关如何读取ant属性和引用,但如下所示:

代码语言:javascript
复制
<artifact:pom id="mypom" file="maven-project/pom.xml" />

似乎既不是财产也不是推荐人。我无意中发现了这一页:

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

在使用NamespaceBuilder的地方:

代码语言:javascript
复制
 def mvn = groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')

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

代码语言:javascript
复制
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

这似乎是相关的,但是属性的值仍然是空的。

EN

回答 4

Stack Overflow用户

发布于 2012-07-19 10:01:27

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

票数 3
EN

Stack Overflow用户

发布于 2012-10-15 16:57:20

下面的代码片段应该可以计算出来。

代码语言:javascript
复制
defaultTasks 'hello'

repositories {
  mavenCentral()
}
configurations {
  mavenAntTasks
}
dependencies {
  mavenAntTasks 'org.apache.maven:maven-ant-tasks:2.1.3'
}

task hello << {
  ant.taskdef(
    resource: 'org/apache/maven/artifact/ant/antlib.xml',
    uri: 'antlib:org.apache.maven.artifact.ant',
    classpath: configurations.mavenAntTasks.asPath)

  ant.'antlib:org.apache.maven.artifact.ant:pom'(id:'mypom', file:'pom.xml')
  println ant.references['mypom'].version
}

我认为,用读取pom文件更直截了当。

票数 3
EN

Stack Overflow用户

发布于 2013-05-30 08:23:38

你试过吗

plugin.html

这基本上将您的maven项目转换为gradle。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11558157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档