49 votes

Maven n'utilise pas Java 7

Je veux empaqueter un (multi)module maven, le POM parent inclut :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <source>${maven.compiler.source}</source>
    <target>${maven.compiler.target}</target>
    <encoding>${project.build.sourceEncoding}</encoding>
  </configuration>
</plugin>

J'utilise Java 1.7 et les propriétés sont spécifiées comme suit :

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
  <slf4j.version>1.6.1</slf4j.version>
</properties>

La version de Maven est 2.2.1 :

johannes@luna:~/workspace/treetank/bundles/treetank-core$ mvn -version
Apache Maven 2.2.1 (rdebian-6)
Java version: 1.7.0
Java home: /usr/lib/jvm/jdk1.7.0/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "3.0.0-14-generic" arch: "amd64" Family: "unix"

Je n'ai aucune idée de la raison pour laquelle il n'utilise pas la version 1.7 de Java. Lorsque l'on invoque mvn package J'obtiens l'erreur (utiliser -source 7 ou plus pour activer l'opérateur diamant) par exemple. Savez-vous pourquoi il essaie d'utiliser la version 1.6 ?

Le POM effectif est :

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <executions>
      <execution>
        <id>default-testCompile</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </execution>
      <execution>
        <id>default-compile</id>
        <phase>compile</phase>
        <goals>
          <goal>compile</goal>
        </goals>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </execution>
    </executions>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
      <encoding>UTF-8</encoding>
    </configuration>
  </plugin>

120voto

Stan Kurdziel Points 1603

Cela ne fonctionne peut-être pas dans maven 2.2.1, mais avec maven 3.0.4, le simple fait d'ajouter les deux propriétés aux propriétés du pom permet d'activer Java 7 pour moi :

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

2voto

demesne Points 146

Explication parfaitement bien faite par Mark Peters sur le problème de compatibilité de jdk 1.7 avec maven 2.2.1 Maven "could not parse error message" (Java 7 + Maven 2)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X