Comment spécifier la version du compilateur Java dans une pom.fichier xml?
j'ai écrit un code maven sur netbeans qui a environ plus de 2000 lignes. Quand je le compile sur netbeans, tout va bien, mais si je veux l'exécuter en ligne de commande, j'obtiens ces erreurs:
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
HashSet<Double> resid_List = new HashSet<Double>(Arrays.asList(resid_val));
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
List<Integer> ind_ovlpList = new ArrayList<Integer>(Arrays.asList(ind_ovlp));
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
public class ColumnComparator implements Comparator<double[]> {
annotations are not supported in -source 1.3
(use -source 5 or higher to enable annotations)
@Override
j'ai essayé D'utiliser Java 1.3.1, erreurs de compilateur , mais j'ai eu plus d'erreurs. J'ai trouvé d'autres posts que je devrais modifier pom.xml, mais je ne sais pas comment. Voici mon pom.xml
<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.mycompany</groupId>
<artifactId>mavenmain</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mavenmain</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>gov.nist.math</groupId>
<artifactId>jama</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
</project>
ce serait grande si vous pouvez m'aider.
4 réponses
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>(whatever version is current)</version>
<configuration>
<!-- or whatever version you use -->
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
voir la page de configuration pour le plugin de compilateur maven:
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
Oh, et: n'utilisez pas Java 1.3.x, les versions actuelles sont Java 1.7.x ou 1.8.x
maven-compiler-plugin il est déjà présent dans la dépendance de la hiérarchie des plugins dans pom.XML. Vérifiez la POM Effective.
pour faire court, vous pouvez utiliser des propriétés comme ceci:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
j'utilise maven 3.2.5
j'ai fait face à la même question dans eclipse néon simple maven projet java
mais j'ajoute ci-dessous des détails à l'intérieur de pom.fichier xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
après clic droit sur project > maven > update project (checked force update) ""
Sa volonté de m'afficher une erreur sur le projet
j'Espère que ça sera utile
Merci
en général, vous ne voulez pas seulement évaluer la version source
( javac -source 1.8
par exemple), mais vous voulez évaluer à la fois la version source
et la version target
( javac -source 1.8 -target 1.8
par exemple).
Notez que de Java 9, Vous avez un moyen de transmettre à la fois l'information et d'une manière plus robuste pour la compatibilité de compilation croisée ( javac -release 9
).
Maven qui enveloppe la commande javac
fournit plusieurs façons de transmettre tous ces Options standard JVM.
comment spécifier la version JDK?
utilisant les propriétés maven-compiler-plugin
ou maven.compiler.source
/ maven.compiler.target
pour spécifier les propriétés source
et target
sont équivalents.
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
et
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
sont équivalents selon la Maven documentation du plugin de compilateur
depuis le <source>
et le <target>
les éléments dans la configuration du compilateur utilisent les propriétés maven.compiler.source
et maven.compiler.target
s'ils sont définis.
l'argument
-source
pour le compilateur Java.
La valeur par défaut est:1.6
.
La propriété de l'utilisateur est:maven.compiler.source
.l'argument
-target
pour le compilateur Java.
La valeur par défaut est:1.6
.
La propriété de l'utilisateur est:maven.compiler.target
.
concernant les valeurs par défaut pour source
et target
, notez que
depuis le 3.8.0
du compilateur maven, les valeurs par défaut sont passées de 1.5
à 1.6
.
du maven-compiler-plugin 3.6 vous avez une nouvelle façon de spécifier la version Java
vous pouvez utiliser le release
argument :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>9</release>
</configuration>
</plugin>
vous pouvez également déclarer juste la propriété de l'utilisateur maven.compiler.release
:
<properties>
<maven.compiler.release>9</maven.compiler.release>
</properties>
mais à ce moment-là la dernière ne sera pas suffisante car la version par défaut maven-compiler-plugin
que vous utilisez ne repose pas sur une version assez récente.
Maven "1519320920 argument de" véhicule release
: un nouvelle JVM standard option que nous avons pu passer de Java 9 :
Compile contre le public, pris en charge et API documentée pour un version VM spécifique.
cette façon fournit une façon standard de spécifier la même version pour le source
, le target
et le bootstrap
JVM options.
Notez que spécifier le bootstrap
est une bonne pratique pour les compilations croisées et cela ne fera pas de mal si vous ne faites pas de compilations croisées non plus.
Quelle est la meilleure façon de spécifier la version JDK?
pour Java 8 et inférieur:
ni maven.compiler.source
/ maven.compiler.target
properties ou utilisant la maven-compiler-plugin
est mieux.
Il ne change rien dans les faits puisque finalement les deux voies reposent sur les mêmes propriétés et le même mécanisme : le plugin de compilateur maven core.
Eh bien, si vous n'avez pas besoin de spécifier d'autres propriétés ou comportements que les versions Java dans le plugin de compilateur, en utilisant cette façon fait plus de sens que ce qui est plus concis:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
De Java 9:
le release
argument (troisième point) est une façon de fortement considérer si vous voulez utiliser la même version pour le source
et le target
.