2012-07-02 23 views
5

Qualcuno può dirmi come effettuare il checkout e ulteriori aggiornamenti da SVN con Maven? Ho letto la documentazione su maven.apache.org ma sembra che sia troppo stupido per questo perché non riesco a capire come usare scm: checkout e scm: aggiornamento senza passare loro i parametri nella riga di comando. Voglio dire, quando ho eseguito solo:Maven SVN checkout

mvn scm:checkout (or scm:update) clean install 

Maven estrae fonti a/target/checkout, poi lo cancella e, naturalmente, non ha nulla a compilare in modo che rende barattolo vuoto. Quindi devo scrivere qualcosa del genere:

mvn scm:checkout -DconnectionUrl=scm:svn:http://svn.my.dev/scm/repo/trunk/myProject -DcheckoutDirectory=src clean install 

Ma io non voglio! Come posso impostare questi parametri all'interno di pom.xml? E come posso impostare la directory corrente come checkoutDirectory? (Probabilmente non dovrebbe essere un problema se lo mise in pom.xml perché posso impostare da $ {} project.basedir, ma chi lo sa) mio pom.xml comprende queste righe:

... 
    <scm> 
    <connection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</connection> 
    <developerConnection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</developerConnection> 
    </scm> 
... 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.7</version> 
     <configuration> 
     <username>username</username> 
      <password>password</password> 
     </configuration> 
     </plugin> 
... 

Btw, qual è la differenza tra connessione e developerConnection. La documentazione di Maven dice solo che developerConnection è ... "L'URL di connessione SCM per gli sviluppatori". Il che è molto sorprendente per me, perché ho pensato che questa fosse una connessione per gli scoiattoli o potrebbe essere un coniglietto.

risposta

4

È possibile aggiungere l'opzione checkoutDirectory direttamente alla configurazione del plugin maven-scm. Una volta che i file sono stati estratti, è possibile utilizzare scm:update con l'opzione workingDirectory (può essere configurata nella configurazione del plugin così)

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.7</version> 
    <configuration> 
    <username>username</username> 
    <password>password</password> 
    <checkoutDirectory>${project.basedir}/src</checkoutDirectory> 
    <workingDirectory>${project.basedir}/src</workingDirectory> 
    </configuration> 
</plugin> 
+0

Sì, grazie, che funziona. Ma non riesco ancora a impostare la directory corrente come checkoutDirectory. Se ho impostato $ {project.basedir} (e lo stesso per workingDirectory), maven per qualche ragione pulisce solo l'intera directory incluso pom.xml ed esce dicendo che non può rimuovere la directory stessa. Non è certo un grosso problema, posso usare la sottodirectory "src" menzionata come checkout e directory di lavoro ma per me sarebbe meglio usare la directory corrente per tale uso. È possibile? – mykola

+0

No, penso che questo non sia possibile poiché Maven cancella sempre la directory di checkout prima di effettuare il checkout. Non so come funzioni esattamente la configurazione della build, ma forse potresti commettere il tuo file POM insieme alla tua directory src/(come fa la maggior parte delle persone). Se questo è possibile nel proprio ambiente, è possibile eseguire 'mvn scm: checkout -DconnectionUrl = scm: svn: http: // my-svn-url -DcheckoutDirectory ="/my/checkout/directory "'. Puoi anche mettere tutte le opzioni -D in un POM "bootstrap" e solo eseguire 'mvn scm: checkout' o' mvn scm: update' –

+0

Bene, ho creato uno script di shell che controlla/aggiorna i progetti e poi esegue maven build. Il plug-in Maven svn, dopo tutto, ha bisogno di installare comunque svn e i comandi svn della shell sono molto semplici, quindi non ho molto senso nell'usare il plugin svn di maven. – mykola

Problemi correlati