2012-07-02 10 views
5

Kann mir jemand sagen, wie man Checkout und weitere Updates von SVN mit Maven machen? Ich lese die Dokumentation auf maven.apache.org, aber es scheint, dass ich dafür zu dumm bin, weil ich nicht verstehen kann, wie man scm: checkout und scm: update benutzt, ohne sie in der Kommandozeile zu übergeben. Ich meine, wenn ich laufe einfach:Maven SVN Kasse

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

Maven Quellen auscheckt zu/target/Kasse, dann löscht sie und natürlich hat es nichts zu kompilieren, so dass es leer Glas macht. Also muss ich so etwas schreiben:

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

Aber ich will nicht! Wie kann ich diese Parameter in pom.xml einstellen? Und wie kann ich das aktuelle Verzeichnis als checkoutDirectory festlegen? (Wahrscheinlich sollte es kein Problem sein, wenn es in pom.xml gesetzt, weil ich es als $ einstellen {project.basedir}, aber wer weiß) Mein pom.xml enthält die folgenden Zeilen:

... 
    <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, Was ist der Unterschied zwischen connection und developerConnection? Maven Dokumentation sagt nur, dass developerConnection ist ... "Die SCM-Verbindungs-URL für Entwickler". Das ist sehr überraschend für mich, weil ich dachte, dass dies eine Verbindung für Eichhörnchen oder vielleicht Hasen ist.

Antwort

4

Sie können die checkoutDirectory Option direkt zur Konfiguration des maven-scm-plugins hinzufügen. Sobald die Dateien ausgecheckt sind, können Sie scm:update mit der workingDirectory Option (kann auch in der Plugin-Konfiguration konfiguriert werden)

<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

Ja, danke, das funktioniert. Aber ich kann immer noch nicht das aktuelle Verzeichnis als checkoutDirectory setzen. Wenn ich $ {project.basedir} (und dasselbe für workingDirectory) setze, räumt maven aus irgendeinem Grund nur das gesamte Verzeichnis, einschließlich pom.xml, und beendet, dass es das Verzeichnis selbst nicht entfernen kann. Es ist natürlich keine große Sache, ich kann das erwähnte "src" -Unterverzeichnis als Checkout- und Arbeitsverzeichnis verwenden, aber für mich wäre es besser, das aktuelle Verzeichnis für eine solche Verwendung zu verwenden. Ist es möglich? – mykola

+0

Nein, ich denke, das ist nicht möglich, da Maven das Checkout-Verzeichnis immer vor dem Checkout löscht. Ich weiß nicht, wie Ihr Build-Setup genau funktioniert, aber vielleicht könnten Sie Ihre POM-Datei zusammen mit Ihrem src/-Verzeichnis festschreiben (wie die meisten Leute). Wenn dies in Ihrer Umgebung möglich ist, können Sie 'mvn scm: checkout -DconnectionUrl = scm: svn: http: // Meine-svn-URL -DcheckoutDirectory ="/my/checkout/directory "' ausführen. Sie können auch alle -D Optionen in ein "bootstrap" POM setzen und einfach 'mvn scm: checkout' oder' mvn scm: update' ausführen. –

+0

Nun, ich habe ein Shell-Skript erstellt, welches Projekte auscheckt/aktualisiert und dann maven build ausführt. Maven Svn Plugin, schließlich, Svn installiert sowieso und Svn Shell-Befehle sind sehr einfach, so sehe ich nicht viel Sinn bei der Verwendung von Maven Svn Plugin. – mykola