2009-07-28 1 views
6

Lavoro su un programma Java che dovrebbe essere compatibile con Java 5. Ho annotazioni @Override sui metodi di interfaccia implementati consentiti in Java 6, ma non in 5. Utilizzo un Java 6 SDK. Eclipse visualizza correttamente i messaggi di errore su @Override quando lo imposto su 5.0. La mia build Maven, tuttavia, viene eseguito senza nemmeno un avvertimento, utilizzando le seguenti impostazioni nel mio POM:Maven onora davvero il tag <source> nel plug-in del compilatore?

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

Am correggo in attesa che questo dovrebbe effettivamente fare la build fallire? Perché no, e c'è qualcosa che posso fare?

risposta

5

Questo è in realtà un problema JDK, non un problema di Maven. L'annotazione @Override non ha esito negativo con un flag -source 1.5 su un javac 1.6. Vai avanti e provalo. L'unico modo per farlo fallire è, sfortunatamente, usare un javac 1.5.

Siamo spiacenti, HTH.

EDIT
mi sono imbattuto in questo problema me stesso, e ho anche chiesto se in realtà è guardando l'impostazione nel pom. L'attivazione dell'output di debug (-X credo, è stato qualche tempo fa) stamperà la riga di comando javac sullo standard output, e vedrai che sta effettivamente usando il parametro -source 1.5.

1

La risposta di roe dice che è necessario utilizzare un compilatore 1.5 perché il JDK non sta facendo il proprio lavoro nel modo giusto. Vale la pena sottolineare che si può evitare di pasticciare con percorsi ecc a seconda della configurazione tweaking the maven-compiler-plugin di utilizzare un compilatore specifica:

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable>${JAVA_1_5_HOME}/bin/javac</executable> 
     <compilerVersion>1.5</compilerVersion> 
    </configuration> 
    </plugin> 
    ... 
</plugins> 

È possibile quindi specificare il percorso del compilatore nel progetto o settings.xml

<properties> 
    <JAVA_1_5_HOME>/path/to/1.5jdk</JAVA_1_5_HOME> 
</properties> 
+0

Buon punto, anche. –