Come si specifica la versione del compilatore Java in un file pom.xml?

Ho scritto un codice Maven su netbeans che ha approssimativamente più di 2000 righe. Quando lo compilo su netbeans, tutto va bene, ma se voglio eseguirlo su riga di comando, otterrò questi errori:

generics are not supported in -source 1.3 (use -source 5 or higher to enable generics) ArrayList<ArrayList> list = new ArrayList<ArrayList>(); generics are not supported in -source 1.3 (use -source 5 or higher to enable generics) HashSet resid_List = new HashSet(Arrays.asList(resid_val)); generics are not supported in -source 1.3 (use -source 5 or higher to enable generics) List ind_ovlpList = new ArrayList(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 { annotations are not supported in -source 1.3 (use -source 5 or higher to enable annotations) @Override 

Ho provato ad usare Java 1.3.1, errori del compilatore , ma ho avuto più errori. Ho trovato da altri post che dovrei modificare pom.xml, ma non so come. Ecco il mio pom.xml

  4.0.0 com.mycompany mavenmain 1.0-SNAPSHOT jar mavenmain http://maven.apache.org  UTF-8    junit junit 3.8.1 test   gov.nist.math jama 1.0.2    

Sarebbe bello se tu potessi aiutarmi.

  [...]  [...]   org.apache.maven.plugins maven-compiler-plugin (whatever version is current)   1.7 1.7    [...]  [...]  

Vedi la pagina di configurazione per il plugin del compilatore maven:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

Oh, e: non utilizzare Java 1.3.x, le versioni correnti sono Java 1.7.xo 1.8.x.

maven-compiler-plugin è già presente nella dipendenza della gerarchia dei plugin in pom.xml. Verificare in POM efficace.

In breve puoi usare proprietà come questa:

  1.8 1.8  

Sto usando Maven 3.2.5

Ho affrontato lo stesso problema in Eclipse neon semplice progetto Maven Java

Ma aggiungo i dettagli sotto il file pom.xml

     org.apache.maven.plugins maven-compiler-plugin 3.6.1  1.8 1.8     

Dopo aver fatto clic con il tasto destro del mouse su progetto> maven> aggiorna progetto (aggiornamento forzato controllato)

Mi risolve a visualizzare l’errore sul progetto

Spero sia utile

thansk

Generalmente non si desidera valutare solo la versione source (ad esempio javac -source 1.8 ) ma si desidera valutare sia la versione di source che quella di target (ad esempio javac -source 1.8 -target 1.8 ).
Si noti che da Java 9 si ha un modo per trasmettere entrambe le informazioni e in un modo più efficace per la compatibilità cross-compilation ( javac -release 9 ).
Maven che avvolge il comando javac fornisce diversi modi per trasmettere tutte queste opzioni standard JVM.

Come specificare la versione di JDK?

Usando le proprietà maven.compiler.target maven-compiler-plugin o maven.compiler.source / maven.compiler.target per specificare l’ source e il target sono equivalenti.

   maven-compiler-plugin  1.8 1.8    

e

  1.8 1.8  

sono equivalenti in base alla documentazione Maven del plug-in del compilatore poiché gli elementi e nella configurazione del compilatore utilizzano le proprietà maven.compiler.source e maven.compiler.target se sono definiti.

fonte

L’argomento -source per il compilatore Java.
Il valore predefinito è: 1.6 .
La proprietà dell’utente è: maven.compiler.source .

bersaglio

L’argomento -target per il compilatore Java.
Il valore predefinito è: 1.6 .
La proprietà dell’utente è: maven.compiler.target .

Per quanto riguarda i valori predefiniti per source e target , si noti che dal 3.8.0 del compilatore maven, i valori predefiniti sono cambiati da 1.5 a 1.6 .

Dal maven-compilatore-plugin 3.6 hai un nuovo modo di specificare la versione di Java

È ansible utilizzare l’argomento di release :

  org.apache.maven.plugins maven-compiler-plugin 3.8.0  9   

Puoi anche dichiarare solo la proprietà dell’utente maven.compiler.release :

  9  

Ma in questo momento l’ultimo non sarà sufficiente poiché la versione predefinita del maven-compiler-plugin che utilizzi non si basa su una versione abbastanza recente.

L’argomento di release Maven release release : una nuova opzione standard JVM che potremmo passare da Java 9:

Compilare con API pubbliche, supportate e documentate per una specifica versione di VM.

In questo modo viene fornito un metodo standard per specificare la stessa versione per le opzioni JVM di source , di target e di bootstrap .
Nota che specificare il bootstrap è una buona pratica per le compilazioni incrociate e non ti farà male se non crei anche compilazioni incrociate.

Qual è il modo migliore per specificare la versione di JDK?

Per Java 8 e seguenti:

maven.compiler.target proprietà maven.compiler.source / maven.compiler.target o l’ uso del maven-compiler-plugin maven.compiler.target maven-compiler-plugin sono migliori. Non cambia nulla nei fatti poiché finalmente i due modi si basano sulle stesse proprietà e sullo stesso meccanismo: il plug-in del compilatore maven core.

Bene, se non è necessario specificare altre proprietà o comportamenti rispetto alle versioni Java nel plugin del compilatore, usare questo metodo ha più senso in quanto è più conciso:

  1.8 1.8  

Da Java 9:

L’argomento di release (terzo punto) è un modo per considerare fortemente se si desidera utilizzare la stessa versione per l’ source e il target .