2008-10-09 3 views
15

Ho un sacco di codice sorgente Java che richiede pre-elaborazione personalizzata. Mi piacerebbe liberarmene ma non è fattibile in questo momento, quindi sono bloccato con esso. Dato che ho uno sfortunato problema che non dovrebbe esistere in primo luogo, come posso risolverlo usando Maven?Preelaborazione del codice sorgente come parte di una build di esperti

(Per la versione completa, sto sostituendo un sistema di creazione basato su Python con uno di tipo Maven, quindi un miglioramento alla volta.) Il codice sorgente non standard è più difficile, e verrà in seguito.)

E 'possibile utilizzare qualsiasi plugin Maven esistente per alterare effettivamente i file sorgente durante la compilazione? (Ovviamente lasciando il solo codice originale non elaborato)

Per essere chiari, per preelaborazione intendo la pre-elaborazione nello stesso senso dell'antenna o un compilatore C eseguirà il preprocesso del codice, e per abitudine intendo che è completamente proprietario e non guarda niente del tutto simile alla pre-elaborazione di C o d'antenna.

risposta

9

Questo è qualcosa che è molto fattibile e io Ho fatto qualcosa di molto simile in passato.

Un esempio da un mio progetto, in cui ho usato il plug-in antrun per eseguire un programma esterno per elaborare fonti:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>process-sources</id> 
      <phase>process-sources</phase> 
      <configuration> 
      <tasks> 
       <!-- Put the code to run the program here --> 
      </tasks> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Nota il tag in cui indico la fase in cui questo viene eseguito. La documentazione per i cicli di vita in Maven è here. Un'altra opzione è quella di scrivere il proprio plug-in Maven che lo fa. È un po 'più complesso, ma è anche fattibile. Lo configurerai comunque in modo simile a quello che ho documentato qui.

+0

Questo è molto utile, grazie. Penso che la parte su cui sto facendo fatica sia come elaborare il codice su una copia di quel codice, e quindi avere Maven compilare la copia anziché l'originale. Penso che forse ho bisogno di capire meglio le basi di Maven. – izb

+0

-1: non stai rispondendo alla domanda, solo fornendo i mezzi per raggiungerlo. In altre parole, cosa metti in attività? –

2

I plug-in Maven possono collegarsi al processo di compilazione in fase di pre-compilazione sì, a seconda che siano disponibili o meno quelli esistenti non ne ho idea.

Ho scritto un plugin Maven un paio di anni fa come parte di un progetto universitario e, sebbene la documentazione fosse un po 'carente in quel momento, non era troppo complicato. Quindi potresti cercare di far girare le tue idee, ci dovrebbero essere molti progetti open source da cui puoi estrarre idee o codice (il nostro era BSD-licenza per esempio ...)