Maven 2 我可以强制Maven 2要求在命令行上指定属性吗?

Maven 2 我可以强制Maven 2要求在命令行上指定属性吗?,maven-2,Maven 2,我正在设置一个maven构建,需要在命令行上将目标服务器指定为属性(然后用于选择适当的概要文件),例如 如果没有设置属性,我希望构建失败-可能吗 是的,我是个新手 编辑:我已经看到了,这似乎意味着这是不可能的,但我不确定它是如何更新的。我的第一个倾向是创建一个在环境属性未设置时处于活动状态的配置文件,并让它以某种方式失败。也许您可以编写一个Maven插件来测试该属性,如果它不存在,则会失败 或者,您可以使用一个非常小的ant构建脚本来测试它。要详细说明edbrannin的替代解决方案: <

我正在设置一个maven构建,需要在命令行上将目标服务器指定为属性(然后用于选择适当的概要文件),例如

如果没有设置属性,我希望构建失败-可能吗

是的,我是个新手


编辑:我已经看到了,这似乎意味着这是不可能的,但我不确定它是如何更新的。

我的第一个倾向是创建一个在环境属性未设置时处于活动状态的配置文件,并让它以某种方式失败。也许您可以编写一个Maven插件来测试该属性,如果它不存在,则会失败


或者,您可以使用一个非常小的ant构建脚本来测试它。

要详细说明edbrannin的替代解决方案:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yourcompany</groupId>
  <artifactId>yourproject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>checkParam</id>
            <phase>initialize</phase>
            <goals><goal>run</goal></goals>
            <configuration>
              <tasks>
                <fail message="'env' property must be set" unless="env"/>
              </tasks>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
我知道最简单的方法(我个人会选择)


您甚至可以使用包含
标记的嵌套
来控制一组允许的值(请参阅Ant手册:)

也许您可以使用这样的解决方法:在Maven中,如果未设置某些属性,您可以激活配置文件:

<project>
...
    <profiles>
        <profile>
            <id>failure_profile</id>
            <activation>
                <property>
                    <name>!env</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>

嗯,这比Ant要详细得多,但是纯Maven:)

每个人都很接近,但强制执行器中有一条规则专门检查属性,不需要Ant或funky配置文件:


该规则还可以检查属性的值。

非常好;非常感谢。正如你所说,这要详细得多,所以我会坚持用奥利弗的答案作为我接受的答案。我说我想要一个纯专业的回答——道歉。我希望我能接受两个答案。更整洁——这正是我想要的。谢谢
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] An Ant BuildException has occured: 'env' property must be set
<project>
...
    <profiles>
        <profile>
            <id>failure_profile</id>
            <activation>
                <property>
                    <name>!env</name>
                </property>
            </activation>
        </profile>
    </profiles>
</project>
<profile>
    <id>failure_profile</id>
    ...
    <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <AlwaysFail/>
                  </rules>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
</profile>
[INFO] [enforcer:enforce {execution: enforce}]
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.AlwaysFail failed with message:
Always fails!
[INFO] ---------------------------------------------------------
[ERROR] BUILD ERROR