Ant では、Maven Ant タスクを使用して、次のように Maven プロパティを読み取ることができます。
<artifact:pom id="mypom" file="pom.xml" />
<echo>The version is ${mypom.version}</echo>
既存の物理 pom.xml ファイルから pom 要素にアクセスするための Gradle の「ネイティブ」サポートはありますか、それとも .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 ファイルがあります。しかし、このタスクに対応する ant 呼び出しに関する情報が gradle docs に見つかりません。私は見ました:
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
関連しているように見えますが、プロパティの値はまだ null です。