2010-10-23 11 views
5

Sono stato un utente molto tempo del sistema di compilazione fare, ma ho deciso di iniziare ad imparare il sistema di Maven costruire. Mentre ho letto la maggior parte dei documenti online, nessuno sembra darmi le analogie che sto cercando. Capisco il ciclo di vita del sistema, ma non ho visto un riferimento per compilare le dipendenze dei passaggi. Ad esempio, voglio generare una grammatica JFlex come parte del passaggio del ciclo di vita della compilazione. Attualmente, non vedo alcun modo di fare di quel passo una fase preliminare di compilazione. La documentazione sembra essere limitata su questo. In generale, il concetto di dipendenze di passi sembra essere cotto in Maven e richiede un plugin per qualsiasi modifica. È questo il caso? Cosa mi manca, perché attualmente il sistema di costruzione Maven sembra molto limitato nel modo in cui è possibile impostare i passaggi di compilazione.Trasferirsi in Maven da gnumake

risposta

4

si può fare nulla in Maven. Generalmente ha un modo predefinito per fare ogni cosa, e quindi puoi collegarti e sovrascriverti se vuoi fare qualcosa di speciale. A volte ci vuole un sacco di Stack Overflow e grattando la testa per capirlo.

C'è anche un funzionario JFlex Maven plugin.

Quando possibile, trovare qualcuno che ha fatto un plugin Maven fare quello che vuoi. Anche se non è corretto al 100%, potrebbe almeno darti un'idea su come far fare qualcosa a qualcuno.

Configurazione minima

Questa configurazione genera il codice Java di un parser per tutti i file di grammatica ( .jflex, * .jlex, * .lex, .flex) in src/main/JFLEX/e le sue sottodirectory. Il nome e il pacchetto del codice sorgente Java generato sono quelli definiti nella grammatica. Il codice sorgente Java generato viene posizionato in target/generate-source/jflex, in sottodirectory che seguono la convenzione Java sui nomi dei pacchetti. pom.xml

<project> 
    <!-- ... --> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>de.jflex</groupId> 
     <artifactId>jflex-maven-plugin</artifactId> 
     <version>1.6.0</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    <!-- ... --> 
    </build> 
    <!-- ... --> 
</project> 

questo si sente come il modo di fare le cose Maven. Metti le tue cose nelle cartelle giuste (src/main/flex), e questo plugin lo creerà automaticamente nel tuo progetto. Se si desidera do fancier custom stuff, there are some options. ma Maven sta favorendo la convenzione sulla configurazione.

+0

Oh bello, è stato quell'obiettivo di esecuzione che ha funzionato. Credo che dovrò tornare indietro e vedere esattamente cosa fa. Quindi l'hook per i plugin sta aggiungendo un'esecuzione e viene eseguito durante il ciclo di vita? – dcolish

+0

Evenrything in Maven è un plugin, anche se non lo vedi. Per voler fare un cambiamento, il primo passo è prendere uno dei plugin incorporati e modificare la configurazione un po '... Quando i plugin incorporati non fanno qualcosa, allora puoi andare in giro con i plugin di terze parti. Se non hai fortuna, puoi crearne una :) – bwawok

0

Per essere sinceri, penso che la tua mentalità corrente sia molto più adatta a formiche che a esperti, e suggerirei di iniziare da quella.

+0

Vuol dire che Maven non è in grado di aggiungere ulteriori compiti di build per compilare? Immagino che potrei mettere i passi di costruzione in un file ant e avremo MVn appena eseguito. Tuttavia, questa soluzione sembra un po 'brutta. – dcolish

+0

Puoi fare qualsiasi cosa su Maven. Risponderò di più in una nuova risposta .. – bwawok

+0

Non ho detto che Maven non poteva farlo. Ho detto che la tua mentalità è più vicina alla formica (proveniente da make) che a quella di Maven. –