2013-02-17 22 views
9

Ho un progetto Java che è stato creato usando Maven. Vorrei aggiungere delle opzioni alla linea di comando "javac" - in particolare, voglio passare alcune opzioni "-J".Come passare le opzioni "-J" a javac tramite Maven?

Così normalmente vorrei fare qualcosa di simile:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <compilerArgument>-J-Xdebug</compilerArgument> 
     <compilerArgument>-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</compilerArgument> 
    </configuration> 
</plugin> 

Tuttavia quando provo questo ricevo errori di forma:

[ERROR] Failure executing javac, but could not parse the error: 
javac: invalid flag: -J-Xdebug 
Usage: javac <options> <source files> 
use -help for a list of possible options 

Su un esame più attento, sembra che Maven-compiler- plugin scrive tutti gli argomenti del compilatore in un file di opzioni e invoca javac come 'javac @optionfile'. In base alla documentazione ufficiale per javac a http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javac.html:

@argfiles uno o più file che elenca le opzioni e file sorgente. Le opzioni -J non sono consentite in questi file.

Quindi sembra che l'opzione in maven-compiler-plugin non funzioni, vuole usare i file arg, i file arg non possono contenere le opzioni che voglio.

Ho anche visto alcuni suggerimenti per utilizzare la mappa invece - tuttavia questo ha avuto risultati simili quando l'ho provato.

Ci sono altre opzioni?

+2

Sembra che tu hai colpito un problema noto - http://jira.codehaus.org/browse/MCOMPILER-129 – radai

risposta

4

Il plugin compilatore permette di specify the location of the jdk, così si potrebbe usare qualcosa di simile:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable><!-- path-to-javac-invoking-script --></executable> 
     <compilerVersion>1.3</compilerVersion> 
    </configuration> 
    </plugin> 

e dotarla di un percorso di un file di script/bat che passerebbe tutti gli argomenti insieme al reale javac insieme ai tuoi argomenti extra?

EDIT-the original issue è stato risolto in compilatore plug 2.4+ e questo dovrebbe funzionare ora senza la mia soluzione

+0

Beh, posso confermare che funziona ... è sicuramente una soluzione alternativa, ma a parte ottenere bug corretti a monte e in attesa di una nuova versione dei plugin, funzionerà :) –

+0

@RichardDowner - non hai chiesto per carina ;-) – radai