9

如果文件存在,我尝试使用 maven-antrun-plugin 检查第一次执行,然后相应地设置属性。在 antrun-plugin 的另一个执行(另一个阶段)中,我想使用该属性。但是在一个执行中设置的属性不能在另一个执行中使用,因为它是一个 ant 而不是 maven 属性并且不会被传播。

是否可以将 ant 属性传播到 maven 或者换句话说从 ant 设置 maven 属性?

在这个问题中使用另一个 Maven 构建不是一种选择。

另一种可能以某种方式起作用的方法是外部 build.xml 但这也不是一个选择,因为我必须将东西保存在一个 pom 中。

我已经阅读了有关使用GMaven设置 Maven 属性的信息,但我想继续使用 ant。

4

3 回答 3

9

从 maven-antrun-plugin 的 1.7 版开始,可以根据插件文档(请参阅 exportAntProperties)。所以,我想,在早期版本中:它不是;-)。

于 2011-12-21T11:24:20.860 回答
1

您可以根据文件的存在而不是 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 仅用于回显

于 2011-08-05T20:56:54.160 回答
1

是的,甚至还有一个默认值。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>
于 2016-04-21T12:50:43.740 回答