Экспорт свойств Maven из кода Ant - PullRequest
5 голосов
/ 18 июня 2010

Я вставил следующий код в свой POM:

<plugin name="test">
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <phase>validate</phase>
            <configuration>
              <tasks>
                <pathconvert targetos="unix" property="project.build.directory.portable">
                  <path location="${project.build.directory}"/>
                </pathconvert>
              </tasks>
            </configuration>
          <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Затем я ссылаюсь на ${project.build.directory.portable} из действия run project, но он возвращается как null.Выполнение <echo> в блоке Ant показывает правильное значение.Что я делаю не так?

Ответы [ 4 ]

11 голосов
/ 20 октября 2011

Для полноты, упомянутая функция была реализована в maven-antrun-plugin в октябре 2010 года.

Требуемый параметр конфигурации: exportAntProperties.

Пример использования:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7-SNAPSHOT</version>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target>
                    <exec outputproperty="svnversion"
                        executable="svnversion">
                        <arg value=".." />
                    </exec>
                </target>
                <exportAntProperties>true</exportAntProperties>
            </configuration>
        </execution>
    </executions>
</plugin>

В качестве примечания, на момент публикации (2011-10-20) в официальной документации плагина эта опция не была задокументирована. Чтобы получить справку для 'versionXYZ' плагина:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-antrun-plugin:versionXYZ -Ddetail
3 голосов
/ 18 октября 2013

Версия 1.7 maven-antrun-plugin работала для меня, чтобы передать свойство от муравья к мавену (и от mvn к муравью). Пример кода, который вычисляет контрольную сумму md5 файла и позже сохраняет его в свойстве, к которому позднее обращается mvn:

<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
    <execution>
        <id>ant-md5</id>
        <phase>initialize</phase>
        <goals>
        <goal>run</goal>
        </goals>
    <configuration>

<target>
    <property name="compile_classpath" refid="maven.compile.classpath"/>
    <property name="outputDir" value="${project.build.outputDirectory}"/>
    <property name="sourceDir" value="${project.build.sourceDirectory}"/>
    <checksum  file="${sourceDir}/com/blah/db/blah.java" property="blah.md5db"/>
</target>
<exportAntProperties>true</exportAntProperties>
</configuration>
</execution>
</executions>

Свойство доступно позже через $ {blah.md5db} в файле Java.

0 голосов
/ 18 июня 2010

Из документации плагина здесь :

Попробуйте добавить префикс maven, чтобы у вас было <path location="${maven.project.build.directory}"/> вместо

Если это не сработает,вам может понадобиться явно переопределить свойство самостоятельно:

<property name="maven.project.build.dir" value="${project.build.directory}"/>
<path location="${maven.project.build.directory}"/>
0 голосов
/ 18 июня 2010

Я не думаю вы можете установить свойство из Ant, которое будет видно из Maven.Вы должны написать Mojo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...