Maven 2 默认情况下激活配置文件

Maven 2 默认情况下激活配置文件,maven-2,maven,Maven 2,Maven,我使用的是Maven 3.0.3。我需要在脚本(“env”)中定义一个变量。我在pom中有一个部分,其中我定义了每个元素的变量 <profile> <id>qa</id> <properties> <env>qa</env> ... </properties> </profile> 质量保证 质量保证 ... 在我的pom.xml中,如何仅在通过“-p”命令行选项未指

我使用的是Maven 3.0.3。我需要在脚本(“env”)中定义一个变量。我在pom中有一个
部分,其中我定义了每个
元素的变量

<profile>
  <id>qa</id>
  <properties>
    <env>qa</env>
    ...
  </properties>
</profile>

质量保证
质量保证
...
在我的pom.xml中,如何仅在通过“-p”命令行选项未指定概要文件时激活概要文件(如果未定义,则设置变量)?我试过下面的

<profile>
  <id>dev</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <property>
      <name>env</name>
      <value>dev</value>
    </property>
  </activation>
  <properties>
    <url>http://localhost:8080/manager</url>
    <server>nnadbmon-dev-tomcat</server>
  </properties>
</profile>

发展
真的
环境
发展
http://localhost:8080/manager
关于开发tomcat的讨论
但是运行命令“mvncile”失败,因为我设置的enforcer插件要求我定义一个“env”变量。以下是我为enforcer插件运行的代码

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <id>enforce-property</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireProperty>
            <property>env</property>
            <message>Environment missing.  This should be either dev, qa, or prod, specified as part of the profile (pass this as a parameter after -P).</message>
            <regex>^(dev|qa|production)$</regex>
            <regexMessage>Incorrect environment.  Expecting one of dev, qa, or prod.</regexMessage>
          </requireProperty>
        </rules>
        <fail>true</fail>
      </configuration>
    </execution>
  </executions>
</plugin>

org.apache.maven.plugins
maven enforcer插件
1
强制执行财产
执行
环境
环境缺失。这应该是dev、qa或prod,指定为概要文件的一部分(将其作为参数传递到-P之后)。
^(开发|质量保证|生产)$
不正确的环境。应为开发人员、qa或生产人员。
真的

我想你想要的文档是

我知道那是很久以前的事了,但我刚才遇到了这个问题,所以。。。你应该这样做:

<profile>
    <id>dev</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <env>dev</env>
        <url>http://localhost:8080/manager</url>
        <server>nnadbmon-dev-tomcat</server>
    </properties>
</profile>

发展
真的
发展
http://localhost:8080/manager
关于开发tomcat的讨论

不清楚您想要什么。是否仅为“env”属性提供默认值?是的,我想为env属性提供默认值。请发布您的强制执行器配置。事实上,您尚未定义“env”属性。如果这样一个属性恰好存在并且具有某个值,您只需设置一个要运行的概要文件。您可以使用其他值向properties元素添加默认的env属性。不过,我不明白你其余的评论。如果以上不是激活配置文件的方法,那么默认情况下如何激活配置文件?您为什么要使用enforcer?只需将其设置为“activeByDefault”,并删除enforcer。嗨,我编辑了我的问题,以包括我尝试过的内容(基本上添加了“true”),但如果我不使用“-P”指令,我的构建仍然会失败(因为enforcer插件找不到“env”属性)。如果您能提供更多信息和示例,请参见:Dave@Dave您可以键入:mvn help:active profiles以查看默认情况下哪些配置文件处于活动状态。另请注意:如果通过其他激活规则或-P命令行更积极地选择了任何其他配置文件,则不会选择activeByDefault配置文件。@GregDomjan,在我的例子中,我添加了
来禁用!true
然后,当我运行
mvn帮助:活动配置文件
时,我可以看到该配置文件在默认情况下被激活,即使我在命令行上使用选项
-Pmyprofile
等传递其他配置文件。