在蚂蚁的Maven Ant Tasks可以用这样的读取性能行家:使用Gradle从现有的pom.xml文件中读取信息?
<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>
是否有摇篮“原生”支持从现有物理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文档中找到有关此任务的相应蚂蚁调用的任何信息。我看过:
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
这似乎是相关的,但属性的值仍然为空。
为什么你期望在Gradle文档中记录这个?你必须查看'maven-ant-tasks'的文档。 – 2012-07-19 13:55:00
我已经阅读了maven-ant-tasks的文档,它只是说可以通过定义 来读取pom信息,然后可以像那样使用版本是$ {mypom.version} 。但是,如何在设置类路径包含maven-ant-tasks之后,如何读取gradle中的 标记? –
u123
2012-07-19 18:06:48
'artifact:pom'是一个Ant任务。请参阅Gradle用户指南中的[从Gradle使用Ant](http://gradle.org/docs/current/userguide/userguide_single.html#ant)一章,了解如何使用Ant任务。运行任务后,您可以获取'mypom'引用。不完全确定如何从那里继续。使用'XmlSlurper'会简单得多。 – 2012-07-20 04:17:57