2015-10-16 13 views
6

Eclipse utilizza il proprio compilatore (ECJ) per compilare il codice Java. Il debug di un programma compilato con Eclipse è più semplice, poiché è possibile applicare immediatamente modifiche al codice semplici (mediante la sostituzione del codice caldo).Utilizzo di Eclipse Java Compiler (ecj) nelle build di maven

Maven utilizza invece (per impostazione predefinita) oracle JDK, che genera codice byte diverso che impedisce la sostituzione del codice hot in una sessione di debug di Eclipse.

Quindi mi piacerebbe utilizzare il compilatore ECL di Eclipse con la mia build di maven, se ho intenzione di eseguire il debug del programma. Un modo conveniente per me sarebbe una "Corte di giustizia europea" profilo:

  • Compile rilasciare

    $ mvn package 
    
  • Compile un'istantanea con sostituzione del codice a caldo abilitata

    $ mvn -P ecj package 
    

anche il profilo l'attivazione può essere specificata in settings.xml o anche nelle proprietà del progetto Eclipse.

Le mie domande sono:

  1. E 'questa la strada giusta da percorrere?
  2. Come può essere configurato?
  3. È possibile utilizzare Maven toolchain per questo?

risposta

9

It is possible per cambiare il compilatore di default javac che viene utilizzato dal maven-compiler-plugin. Il compilatore Eclipse è in bundle nell'arte plexus-compiler-eclipse e viene dichiarato impostando eclipse nell'attributo compilerId dello maven-compiler-plugin.

Se si desidera attivare questo cambiamento per un custom profile, si potrebbe avere la seguente configurazione:

<profile> 
    <id>ecj</id> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.6.0</version> 
     <configuration> 
      <compilerId>eclipse</compilerId> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-compiler-eclipse</artifactId> 
      <version>2.8.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

Il plugin è mantenuta nella plexus-compiler GitHub repository. Versione 2.8.1 uses 3.11.1.v20150902-1521 of JDT, sebbene sia possibile utilizzare la propria versione aggiungendo una dipendenza su org.eclipse.tycho:org.eclipse.jdt.core dopo la dipendenza del compilatore Plexus.

+0

Funziona come un fascino! Grazie! –

+2

Buono, funziona per voi. Per ogni evenienza: non sono riuscito a trovare dove viene mantenuto plexus-compiler-eclipse e di conseguenza non sono sicuro che forniscano integrazione con le versioni più recenti di ecj (l'ultima che ho trovato è stata l'integrazione di ecj a partire dal 20140604). In caso di problemi con l'approccio sopra, le FAQ JDT hanno anche alcuni suggerimenti (raccomandando tycho-compiler-jdt per l'attività): https://wiki.eclipse.org/JDT/FAQ#Can_I_use_JDT_outside_Eclipse_to_compile_Java_code.3F –

Problemi correlati