2016-03-16 1 views

Répondre

0

Vous pouvez utiliser Maven profile activation basé sur la valeur des propriétés, dans ce cas, la propriété sera jdk.version et sa valeur la configuration différente de JDK. Le profil changera alors la configuration du plugin Maven Surefire en conséquence.

Par conséquent, votre pom peut ressembler à ce qui suit:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.sample</groupId> 
    <artifactId>sample-project</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <jdk.version>1.7</jdk.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>${jdk.version}</source> 
        <target>${jdk.version}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <profiles> 
     <profile> 
      <id>surefire-java7</id> 
      <activation> 
       <property> 
        <name>jdk.version</name> 
        <value>1.7</value> 
       </property> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.19.1</version> 
         <configuration> 
          <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
     <profile> 
      <id>surefire-java8</id> 
      <activation> 
       <property> 
        <name>jdk.version</name> 
        <value>1.8</value> 
       </property> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.19.1</version> 
         <configuration> 
          <argLine>-Xmx1024m</argLine> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

Notez la section profiles à la fin. Deux profils sont définis:

  • surefire-java7: elle sera activée par la valeur 1.7 pour la variable jdk.version et régler le argLine pour le plugin Maven Surefire avec la valeur de consigne
  • surefire-java8: elle sera activée par la valeur 1.8 pour la variable jdk.version et définir un argLine différent pour le plugin Maven Surefire.

Notez également que, avec cette configuration, vous pouvez même changer la version JDK (et en tant que telle configuration Surefire) à la demande de la ligne de commande, comme suit:

mvn clean test -Djdk.version=1.8 

Le profil associé sera automatiquement activé partie de la construction.


Remarque importante concernant la compilation croisée (vous pouvez déjà être au courant, mais juste au cas où) je vous suggère de lire attentivement this question/answer.

2

Plutôt qu'une propriété, vous devez utiliser l'activation basée sur JDK.

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.sample</groupId> 
    <artifactId>sample-project</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <jdk.version>1.7</jdk.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.5.1</version> 
       <configuration> 
        <source>${jdk.version}</source> 
        <target>${jdk.version}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <profiles> 
     <profile> 
      <id>surefire-java7</id> 
      <activation> 
       <jdk>(,1.8)</jdk> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.19.1</version> 
         <configuration> 
          <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
     <profile> 
      <id>surefire-java8</id> 
      <activation> 
       <jdk>1.8</jdk> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.19.1</version> 
         <configuration> 
          <argLine>-Xmx1024m</argLine> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

Cf la documentation de l'utilisateur. http://maven.apache.org/guides/introduction/introduction-to-profiles.html http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html