How do I invoke two different profiles in one maven command?

JavaMavenMaven Profiles

Java Problem Overview


I have two profiles for different environments in pom.xml, I have to run mvn -PTest1 install and mvn -PTest2 install command to get these profiles in use. Can we integrate two separate maven commands in a single one (like mvn clean install)?

Here is my Pom entry

<profiles>
  <profile>
  <id>Test1</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.5</jdk>
    <os>
       <name>Windows XP</name>
       <family>Windows</family>
       <arch>x86</arch>
       <version>5.1.2600</version>
    </os>
    <property>
       <name>sparrow-type</name>
       <value>African</value>
    </property>
  </activation>
  <dependencies>
    <dependency>
      <groupId>
      com.endeca
      </groupId>
      <artifactId>
      endeca_navigation_Test1
      </artifactId>
     <version>
     6.1
     </version>
     <!--<version>stable</version> -->
    <scope>
    compile
    </scope>
  </dependency>
  </profile>

  <profile>
    <id>Test2</id>
    <activation>
      <activeByDefault>false</activeByDefault>
      <jdk>1.5</jdk>
      <os>
        <name>Windows XP</name>
        <family>Windows</family>
        <arch>x86</arch>
        <version>5.1.2600</version>
      </os>
      <property>
        <name>sparrow-type</name>
        <value>African</value>
      </property>
    </activation>
    <dependencies>
      <dependency>
        <groupId>
        com.endeca
        </groupId>
        <artifactId>
        endeca_navigation_Test2
        </artifactId>
        <version>
        6.1
        </version>
        <!--<version>stable</version> -->
        <scope>
        compile
        </scope>
      </dependency>
    </dependencies>
  </profile>
</profiles>

It will helpfull to manage hudson job using single command

Java Solutions


Solution 1 - Java

Based on the documentation and discussion here, try separating profile names with a comma:

mvn install -P Test1,Test2

Solution 2 - Java

Mifeet's answer is correct, but in Windows PowerShell you should quote parameters, otherwise you'll get "unknown lifecycle phase" error.

mvn install -P 'Test1,Test2'

Solution 3 - Java

For me Mifeet's answer isn't working. I get "unknown lifecycle phase Test2". For me this is working:

mvn install -PTest1 -PTest2

Solution 4 - Java

Based on the maven help command

 -P,--activate-profiles <arg>   Comma-delimited list of profiles to activate

So you can run mvn package -Pp1,p2 to run profile id with p1 and p2

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondinesh sharmaView Question on Stackoverflow
Solution 1 - JavaMifeetView Answer on Stackoverflow
Solution 2 - JavanaXa stands with UkraineView Answer on Stackoverflow
Solution 3 - JavadermoritzView Answer on Stackoverflow
Solution 4 - Javasendon1982View Answer on Stackoverflow