2010-05-12 17 views
7

Per quanto riguarda la mia domanda precedente ->Is there a SVN Maven?, sono andato pagina di utilizzo trough ->http://maven.apache.org/scm/maven-scm-plugin/usage.html non ha trovato esattamente quello che stavo cercando, ecco quello che vorrei fare: listaMaven SVN esempio cassa

  • Checkout dei progetti che ho specificato per es:

http://mysvnurl/myprojectname dove ho potuto parametrizzare il nome del progetto

Poi permette di dire se c'è o 3-4 n numero di sotto-progetti (moduli) (per il quale non posso S pecificare anche i nomi) che voglio verificare, e che potrei specificare branch (trunk) e revision. Per semplificare:

  • Cassa certo sotto-progetti (moduli) tronco di MyProjectName

Es:

http://mysvnurl/myprojectname/project1/trunk/ * // ottenere tutto
http://mysvnurl/myprojectname/project2/trunk/ * // ottenere tutto

Come potrei farlo con Maven, qualcuno con più esperienza può spiegare come farlo o indicarmi un posto dove posso leggere come fare, ho cercato su Google specifico per le mie esigenze.

Grazie

risposta

8

Il Maven SCM Plugin di cui ho parlato nella tua domanda precedente è alternativa al compito SvnAnt, nel senso che permette di interagire con un repository Subversion (tra gli altri) da Maven o plugin (come il plugin di rilascio). Ma penso di aver perso quello che vuoi fare esattamente.

Quindi torniamo a questa domanda, ecco come si potrebbe usare scm:checkout sulla CLI:

mvn scm:checkout -DconnectionUrl=scm:svn:https://svn.dev.java.net/svn/glassfish-svn/trunk/v3 -DcheckoutDirectory=v3 

E potremmo immaginare di mettere tutto questo in un POM e dichiarando questi parametri nel configuration del plugin (o in più execution se è necessario gestire più URL). E facoltativamente, potresti persino giocare con alcuni excludes o includes (che ora sono onorati, vedi SCM-526 ).

... 
<execution> 
    <id>perform-checkout</id> 
    <configuration> 
    <connectionUrl>myUrl</connectionUrl> 
    <checkoutDirectory>myDirectory</checkoutDirectory> 
    <excludes>folder1/*,folder2/*</excludes> 
    </configuration> 
    <phase><!-- some phase --></phase> 
    <goals> 
    <goal>checkout</goal> 
    </goals> 
</execution> 
... 

Ma non l'ho mai usato in questo modo. Per sicurezza, date un'occhiata allo scm:bootstrap che potete usare per avviare un progetto da un POM minimo (vedi Bootstrapping a Project Using a POM). Ma in entrambi i casi, non sono sicuro al 100% che questi obiettivi abbiano lo scopo di fornire il livello di automazione che stai cercando.

E più guardo la tua domanda, più penso che sia svn:externals (ad es.una funzione di Subversion) è ciò che stai cercando. Questo è quello che uso per fare checkout di progetti complessi con trunk multipli in un singolo comando.

1

è il vostro progetto organizzato come la seguente?

root (pom.xml) 
    +--- Module1 (pom.xml) 
    +--- Module2 (pom.xml) 

Avete una generazione multimodulo?

La prima cosa è, perché vorresti fare il checkout via Maven? Fece costruire server fare questo lavoro o il vostro IDE ...

+1

@khmarbaise Hai una build multimodulo? - Sì, la prima cosa è, perché vorresti fare il checkout via Maven? - perché voglio automatizzare il processo. – ant

+0

Ok. Una build multimodulo deve essere verificata tramite Hudson per CI o si controlla l'albero con un singolo comando. Non c'è bisogno di farlo nello stesso Maven. Potrebbe essere una svista una cosa ... – khmarbaise

+0

@khmarbaise la cosa è che voglio controllare alcuni sottomoduli non tutti – ant

3

Generalmente una build multi-modulo richiede che i moduli figlio siano contenuti nella directory del modulo genitore. Ma non sembra che Hudson/Jenkins possano creare questo tipo di struttura a meno che tutti i moduli non si trovino in un singolo albero in SCM. Per il mio progetto, non è così. Molti dei bambini sono in alberi scm separati (su github). Sarebbe molto utile se Maven potesse creare la struttura. Deve essere in grado di farlo dato solo il padre genitore, perché i bambini non sono visibili finché non sono stati scaricati da scm.

+0

Ciao. Quindi hai trovato una soluzione per questo problema? – aindl

+0

No. Ho rinunciato alla build multi-modulo quando ho scoperto che Maven non avrebbe eseguito correttamente una release multi-modulo quando i moduli sono in realtà sottomoduli git. Le operazioni git non sono corrette. Ho rinunciato a questo un paio di mesi fa, quindi non ricordo i dettagli. Quindi costruiamo e rilasciamo i moduli (10 di loro) separatamente. – GrampaJohn