Можно ли установить свойство maven из ant? - PullRequest
8 голосов
/ 21 февраля 2011

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

Можно ли распространить свойство ant на maven или, другими словами, установить свойство maven из ant?

Используя другую сборку Maven, как в , этот вопрос не вариант.

Другим способом, который может как-то работать, был бы внешний build.xml, но это тоже не вариант, потому что я должен держать вещи в одном pom.

Я читал об использовании GMaven для установки свойства Maven, но я бы хотел остаться с муравьем.

Ответы [ 3 ]

8 голосов
/ 21 декабря 2011

Начиная с версии 1.7 maven-antrun-plugin это возможно согласно документации для плагина (см. ExportAntProperties).Итак, я полагаю, в более ранних версиях: это не так; -).

1 голос
/ 21 апреля 2016

Да, даже со значением по умолчанию. Пример настройки install.path с эхом:

<plugin>
    <!-- Workaround maven not being able to set a property conditionally based on environment variable -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <exportAntProperties>true</exportAntProperties>
                <target>
                    <property environment="env"/>
                    <condition property="install.path" value="${env.INSTALL_HOME}" else="C:\default-install-home">
                        <isset property="env.INSTALL_HOME" />
                    </condition>
                    <echo message="${install.path}"/>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>
1 голос
/ 06 августа 2011

вы можете перенаправить вашу стратегию на активацию разных профилей в зависимости от наличия файла вместо antrun-plugin:

<profiles>
    <profile>
        <id>notExist</id>
        <activation>
          <file>
            <missing>target/maven-archiver/notExist.properties</missing>
          </file>
        </activation>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                      <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            <echo>not exist</echo>
                        </tasks>
                    </configuration>
                  </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

<profile>
    <id>exist</id>
    <activation>
      <file>
        <exists>target/maven-archiver/pom.properties</exists>
      </file>
    </activation>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                      <goal>run</goal>
                    </goals>
                    <configuration>
                        <tasks>
                            <echo>not exist</echo>
                        </tasks>
                    </configuration>
                  </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

Вы можете использовать профили активации maven функции , чтобы различать одну конфигурацию и другую в соответствии с критериями активации.

Я использую antrun-plugin в примере только для эхо

...