2011-01-25 13 views
17

Sto cercando una guida su come creare nuovi archetipi di Maven che implicano l'utilizzo di parametri per creare directory e nomi di file in cui i parametri vengono utilizzati come prefissi nei nomi di file e parte della struttura/directory del pacchetto create dal archetipo.Qualche buona guida avanzata su come creare nuovi archetipi di Maven?

Tutto quello che posso trovare sono istruzioni molto semplici su come realizzare progetti molto semplici.

risposta

8

perché non utilizzare il sito Web Maven stesso?

http://maven.apache.org/guides/mini/guide-creating-archetypes.html

+3

Mi fornisce solo le basi. Prenderò persino una definizione di archetipo open source che posso usare come modello per ciò che voglio fare. – menapole

+1

mi dispiace così tanto male, ho frainteso l'ultima parte "semplici istruzioni su come realizzare progetti molto semplici". – fmucar

+0

si desidera creare sth come appfuse ma con Maven quindi http://static.appfuse.org/? – fmucar

1

Anche Cerco la stessa cosa. Anche io trovo la home page di Maven molto semplice e non soddisfa i nostri requisiti.

Ho anche provato HowToCreateMavenArchetypeFromProject Ma ho ancora una domanda. Come richiamare un file specifico dell'archetipo quando viene generato il progetto di quel tipo di archetipo. Per essere precisi, se ho una classe java App.java, come richiamarla mentre creo un progetto?

Ciò che accade con create-archetype-from-project è che crea un progetto con gli stessi file e la stessa struttura di directory e dobbiamo eseguirlo di nuovo per farlo funzionare.

Inoltre, $ {groupId} e cose del genere funzionano solo in file Maven. Cosa succede se ho un file di proprietà e voglio usare l'artefatto che l'utente ha inserito?

Fammi sapere se trovi qualcosa di buono. Nel frattempo, ti farò sapere quando trovo una soluzione.

Grazie

3

Credo che abbiamo incontrato lo stesso problema, finalmente ho risolto con illuminante da questo article

supponendo che si desidera generare il pacchetto com.company.base. dal.dao, che noi chiamiamo com.company.base è package principale, dal.dao è pacchetto di base, quindi basta mettere il file java modello sotto src/main/java/dal/dao, e ottimizzare l'packaged="true" in META-INF/maven/archetipo-metadata.xml, come di seguito

  <fileSet filtered="true" packaged="true" encoding="GBK"><!--packaged="true" tells maven to copy the core package in to root package while creating a project.--> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
      </includes> 
     </fileSet> 

dire, se si imposta -Dpackage=com.alibaba.china dopo eseguire archetipo mvn: generare, si creerà pacchetto sorgente Java come com/alibaba/Cina/dal/dao /sample.java

come come fornire le informazioni sul pacchetto di prefisso nel campione.java, basta usare $ {package} come di seguito

package ${package}.dal.dao; 

il plugin archetipo sostituirà $ {} pacchetto con -Dpackage come modello di velocità

+0

Grazie, questo mi ha aiutato ma avevo bisogno di cambia la codifica in "UTF-8". Inoltre, il collegamento è morto, quindi è bene che tu abbia incluso abbastanza informazioni nella risposta. – antonyh

+0

O Sì, il GBK è compatibile con caratteri cinesi, UTF-8 dovrebbe andare bene –

1

dal documentacion Maven: http://maven.apache.org/archetype/archetype-models/archetype-descriptor/archetype-descriptor.html

A definisce set di file il modo in cui i file del progetto situati nel file jar vengono utilizzati dal plugin Archetype per generare un progetto. Se il nome del file o della directory contiene proprietà, viene sostituito con il valore della proprietà corrispondente.

se è possibile assegnare un nome al file come

__artifactId___local.properties

... quando si genera il proyect con artifactId = foo lo farà contiene questo file:

foo_local.properties

+0

Avviso: la regex è troppo ingorda quindi se si ha un nome file Blah___artifactId__ (triplo underscore nel mezzo) fallirà con un messaggio sciocco che dice 'può 't trovare variabile _artifactId' quando in realtà volevi un carattere di sottolineatura letterale in primo piano. –

+1

in questo caso è possibile modificare la proprietà di un utente underscore = _ e denominare il file come Blah__underscore____artifactId_ - –

+0

D'accordo ma ho provato esattamente questo, ma non ho avuto successo: ora ho deciso di cambiare la convenzione di denominazione per eliminare i caratteri di sottolineatura. –