2017-05-12 90 views
0

我正在使用Maven配置文件来区分特定于环境的配置的项目。我正在运行版本3.0.5。我们的目标是能够通过从对应于一个激活属性,像这样的壳传递系统属性来初始运行命令指定环境:使用系统属性激活Maven配置文件

的pom.xml

<profiles> 
    ... 
    <profile><!-- Local Dev Environment --> 
     <id>local</id> 
     <activation> 
      <property> 
       <name>environment</name> 
       <value>local</value> 
      </property> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile><!-- End Local Dev Environment --> 
    ... 
</profiles> 

启动命令

mvn exec:java -Denvironment=local

然而,配置文件没有被激活(使用确认,它不产生输出)。我对Maven很不喜欢,但不应该这样工作吗?

这是我的理解是与-D选项运行mvn允许我设置系统属性(在这种情况下:environment应该等于local)运行应用程序时确定其随后与Maven的POM的交叉引用这(符合要求的activation properties),然后运行该应用程序并激活这些配置文件。有没有什么我不在这里?

回答

0

我有一个POM在这里为测试套件的小测试应用程序。我已经包含你的个人资料,并设置一个属性来跳过测试。

我可以使用2种不同的方法启动的情景模式(和跳过测试):

mvn clean package -Plocal 

mvn clean package -Denvironment=local 

我以前没有使用过的exec插件,我只是看看现在,但我不认为它应该改变配置文件的行为。

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>test-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <profiles> 
     <profile><!-- Local Dev Environment --> 
      <id>local</id> 
      <activation> 
       <property> 
        <name>environment</name> 
        <value>local</value> 
       </property> 
      </activation> 
      <properties> 
       <maven.test.skip>true</maven.test.skip> 
      </properties> 
     </profile><!-- End Local Dev Environment --> 
    </profiles> 
</project> 
+0

我应该在我试图直接激活资料中使用'-P'原来的问题已经提到过,并且也不成功,这使我觉得有两种东西与我的POM或怪异的东西与我Maven安装。 –

+0

我编辑了我的答案,包括一个适用于我的示例POM,但是我没有使用'exec'插件尝试过。 – Matt

相关问题