2014-09-04 22 views
5

Abbiamo una build di Android basato Maven, e abbiamo appena fatto il passaggio da JDK 6 a 7.IntelliJ progetto di importazioni da POM usando sbagliato JDK versione

Questo è venuto con la sua parte di problemi IntelliJ però. Quello che succede è che ogni volta che rileva un cambiamento nel POM, e reimportazioni/aggiorna il progetto, si ritorna alla selezione del vecchio "modulo SDK", quello che è configurato per l'utilizzo di Java 6:

enter image description here

Anche se elimino manualmente questi SDK dalla finestra di dialogo "Impostazioni piattaforma", continuano a riapparire come "Piattaforma Maven Android API 19 (N)" dove N è il numero utilizzato per disambigerlo da tutti gli altri SDK (identici).

Devo menzionare che specifichiamo nel POM che Java 7 è mirato. Ho cercato di impostare sia il livello linguistico compilatore plug-in, e le maven.compiler.* proprietà (non so se che compie la stessa cosa o no), senza fortuna:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
    </configuration> 
</plugin> 

non dovrebbe prendere IntelliJ che e configurare sempre il progetto utilizzare un Java 7 SDK? Mi sto perdendo qualcosa?

Ho notato che il problema scompare quando rimuovo qualsiasi riferimento a 1.6 SDK interamente in IntelliJ. Non sorprende, suppongo, ma anche non fattibile dato che ho altri progetti che fanno ancora affidamento sulla presenza di un Java 6 SDK.

risposta

0

Raccoglierà il jdk che si sceglie nella struttura del progetto, si prega di cambiarlo lì.

File> struttura del progetto> impostazioni del progetto> progetto> sdk del progetto scegliere 1.7.

Se 1.7 non è presente, andare a File> struttura progetto> Impostazioni piattaforma> SDKs addd 1.7 lì.

+2

beh, non voglio cambiarlo manualmente per ogni sottomodulo ogni volta che ricarico il POM ... chiaramente questo è un bug in IntelliJ se poi è necessario? – Matthias

+1

Se lo si imposta e il modulo principale tutti i figli lo erediteranno. – StackFlowed

+2

Non è questo il problema. Il problema è che tutte queste cose sono state reimpostate su Java 6 dopo la reimportazione. – Matthias

4

Ho riscontrato un problema molto simile con i progetti Maven che avevo creato utilizzando IntelliJ (versione 14.x nel mio caso). Ho configurato IntelliJ per utilizzare JDK 8 nelle Impostazioni progetto, ma l'IDE ha continuato a evidenziare problemi nel mio codice (ad esempio lamentando l'utilizzo di @Override).

Si scopre che qui le impostazioni di Maven hanno la precedenza, che nel mio caso sono state impostate su JDK 1.5 (da cui le redini IDE). La modifica delle impostazioni qui risolve il problema, ma solo temporaneamente perché vengono ripristinati quando vengono reimportati i progetti Maven o quando viene riavviato IntelliJ.

La correzione permanente è dichiarata esplicitamente la versione JDK nel file Maven pom, come spiegato in questi articoli.

stop IntelliJ IDEA to switch java language level everytime the pom is reloaded (or change the default project language level) da @vikingsteve

IDEA: javac: source release 1.7 requires target release 1.7 da @bacchus

Ecco quello che ho detto è necessario aggiungere al file pom.xml.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Queste impostazioni vengono riflessi nelle Impostazioni Maven nell'IDE e risolto il problema per me.

Problemi correlati