In Ant il Maven Ant Tasks può essere utilizzato per leggere le proprietà Maven come questo:Informazioni di lettura dal file pom.xml esistente usando Gradle?
<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>
Esiste il supporto "nativo" in Gradle per accedere agli elementi pom da un file pom.xml fisico esistente o devo passare attraverso l'approccio Ant sopra nel mio file .gradle per farlo funzionare?
In questa pagina:
http://gradle.org/docs/current/userguide/maven_plugin.html
ha informazioni sulla generazione di file pom, ma quello non è quello che sto cercando. Ho cercato di creare un file .gradle che fa lo stesso:
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
}
dove ho un semplice file pom.xml situato accanto al file build.gradle. Ma non riesco a trovare alcuna informazione nei documenti gradle sulle corrispondenti chiamate ant per questa attività. Ho guardato:
http://www.gradle.org/docs/current/userguide/ant.html
per il modo di leggere le proprietà formica e riferimenti, ma questo:
<artifact:pom id="mypom" file="maven-project/pom.xml" />
sembra essere né una proprietà o di riferimento. Mi sono imbattuto in questa pagina:
in cui una viene utilizzata NamespaceBuilder:
def mvn = groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')
ma quando si utilizza questo approccio ottengo:
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
dopo un po 'di googling Ho trovato:
http://issues.gradle.org/browse/GRADLE-2385
che sembra correlato, ma il valore della proprietà è ancora nullo.
perché si aspetta che questo sia documentata nella documentazione di Gradle ?! Dovrai cercare nella documentazione di 'maven-ant-tasks'. –
Ho letto i documenti per le attività di maven-ant che dicono semplicemente che le informazioni su pom possono essere lette definendo che può essere usato come La versione è $ {mypom.version} . Ma come faccio a leggere il tag in gradle dopo aver impostato il classpath per includere le attività di maven-ant? –
u123
'artefatto: pom' è un'attività Ant. Vedi il capitolo [Using Ant from Gradle] (http://gradle.org/docs/current/userguide/userguide_single.html#ant) nella guida utente di Gradle su come lavorare con le attività di Ant. Dopo aver eseguito l'attività, puoi prendere il riferimento 'mypom'. Non esattamente sicuro come procedere da lì. Usare 'XmlSlurper' sarebbe molto più semplice. –