Доступ к свойствам зависимости maven-ant-tasks (объявленным в ее pom) из ant
Я использую maven-ant-tasks для проекта и столкнулся с необходимостью ссылаться на свойства, объявленные в pom зависимости от Ant.
Конкретно я в зависимости от вафли-джня:
<property name="waffle-jna-version" value="1.7" />
<artifact:dependencies ...>
<dependency groupId="com.github.dblock.waffle" artifactId="waffle-jna" version="${waffle-jna-version}">
</artifact:dependencies>
и в его pom.xml
, com.github.dblock.waffle:waffle-jna
заявляет:
<properties>
<guava.version>18.0</guava.version>
<jna.version>4.1.0</jna.version>
<servlet.version>2.5</servlet.version>
<slf4j.version>1.7.7</slf4j.version>
</properties>
Мне нужно выяснить, какие версии jna и slf4j использует версия Waffle, которую я создаю для использования, а затем добавить некоторые связанные зависимости (например, зависимость во время выполнения от slf4j-simple) с теми же версиями.
Я знаю, что вместо этого я могу исключить зависимости для Waffle в maven-ant-tasks, а затем объявить их с моими собственными версиями на верхнем уровне, но я бы предпочел следовать тем версиям, которые использует версия Waffle. с помощью.
Есть ли способ сказать maven-ant-tasks для предоставления свойств, объявленных в pom зависимостей для Ant?
Я попытался импортировать пом, с дополнительной зависимостью от пом плюс <artifact:pom>
:
<artifact:dependencies>
<dependency groupId="com.github.dblock.waffle" artifactId="waffle-jna" version="${waffle-jna-version}" type="pom"/>
</artifact:dependencies>
<!-- Expose the Waffle POM so we can reference its version attributes -->
<artifact:pom file="${com.github.dblock.waffle:waffle-jna:pom}" inheritAllProperties="true"/>
... но пока он правильно устанавливает свойство для пути к pom:
ant -debug
....
Setting project property: com.github.dblock.waffle:waffle-jna:pom -> /home/craig/.m2/repository/com/github/dblock/waffle/waffle-jna/1.7/waffle-jna-1.7.pom
Adding reference: com.github.dblock.waffle:waffle-jna:pom
....
[artifact:pom] Maven Ant Tasks version: 2.1.3
BUILD FAILED
/home/craig/projects/2Q/pgjdbc/build.xml:148: java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:334)
at org.apache.tools.ant.Project$AntRefTable.getReal(Project.java:2409)
at org.apache.tools.ant.Project$AntRefTable.access$000(Project.java:2394)
at org.apache.tools.ant.Project.addReference(Project.java:1973)
at org.apache.maven.artifact.ant.Pom.doExecute(Pom.java:423)
at org.apache.maven.artifact.ant.AbstractArtifactTask.execute(AbstractArtifactTask.java:751)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
....
так что я в своем уме. Я бы предпочел просто использовать Maven для всего этого, но, к сожалению, в настоящее время это не решение, которое я могу принять в одностороннем порядке.
1 ответ
Ваше заявление на импорт пом выше:
<!-- Expose the Waffle POM so we can reference its version attributes -->
<artifact:pom file="${com.github.dblock.waffle:waffle-jna:pom}" inheritAllProperties="true"/>
немного отличается от того, что в документации по maven ant-tasks pom:
<artifact:pom id="mypom" file="pom.xml" />
Вы скучаете по id="mypom"
назначение.
Это позволит вам ссылаться на свойства по имени, как ${mypom.properties.jna.version}
Обратите внимание, что вы должны явно указать путь к узлу свойств; свойства не добавляются непосредственно под mypom
, но появляются под mypom.properties
, отражая pom.xml
состав. (Это также означает, что унаследованные свойства от родительских poms не будут выставлены).