2010-05-12 6 views
7

In Bezug auf meine vorherige Frage ->Is there a SVN Maven?, ich Trog Verbrauchsseite ging ->http://maven.apache.org/scm/maven-scm-plugin/usage.html fand nicht ganz das, was ich suchte, hier, was würde ich tun mag:Maven SVN checkout Beispiel

  • Kasse Liste von Projekten, die ich für die ex angeben:

http://mysvnurl/myprojectname wo ich kann die Projektnamen parametrisieren

Dann können sagen, wenn gibt es 3-4 oder n Anzahl der Teilprojekte (Module) (für die ich kann s pecify die Namen auch, die ich auschecken möchte, und dass ich Zweig (Stamm) und Revision angeben konnte. Zur Vereinfachung:

  • Kasse bestimmte Teilprojekte (Module) Stamm myprojectname

Ex:

http://mysvnurl/myprojectname/project1/trunk/ * // bekommen alles
http://mysvnurl/myprojectname/project2/trunk/ * // bekommen alles

Wie würde ich das mit Maven machen, kann jemand mit mehr Erfahrung erklären, wie man das macht oder mich irgendwo hinführen, wo ich lesen kann, wie? Ich habe nicht gegoogelt spezifisch für meine Bedürfnisse.

Danke

Antwort

8

Die Maven SCM Plugin, die ich in Ihrer vorherigen Frage erwähnte ist eine Alternative zu SvnAnt Aufgabe in dem Sinne, dass es mit einer Subversion-Repository (unter anderem) interagieren kann aus Maven oder Plugins (wie das Release-Plugin). Aber ich denke, ich habe verpasst, was du genau machen willst.

Lassen Sie uns also auf diese Frage zurückgehen, ist hier, wie Sie scm:checkout auf der CLI verwenden:

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

Und wir könnten sich vorstellen, setzen das alles in einem POM und zu erklären, diese Parameter in der configuration des Plugins (oder in mehreren execution, wenn Sie mehrere URLs behandeln müssen). Und optional könnten Sie sogar mit einigen excludes oder includes spielen (die jetzt geehrt werden, siehe 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> 
... 

Aber ich habe es nie so verwendet. Nur für den Fall, vielleicht werfen Sie einen Blick auf scm:bootstrap, die Sie stattdessen verwenden können, um ein Projekt von einem minimalen POM (siehe Bootstrapping a Project Using a POM) Bootstrap stattdessen. Aber in beiden Fällen bin ich nicht 100% sicher, dass diese Ziele den Automatisierungsgrad bieten sollen, nach dem Sie suchen.

Und je mehr ich auf Ihre Frage schaue, desto mehr denke ich, dass svn:externals (d. H.eine Subversion-Funktion) ist, was Sie suchen. Das ist es, was ich für Checkouts komplexer Projekte mit mehreren Trunks in einem einzigen Befehl verwende.

1

Ihr Projekt wie die folgenden organisiert ist?

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

Haben Sie ein Multimodul-Build?

Die erste Sache ist, warum möchten Sie über Maven auschecken? Lassen Sie bauen Server tun, um diese Arbeit oder Ihre IDE ...

+1

@khmarbaise Haben Sie ein Multimodul-Build? - ja, das erste ist, warum möchten Sie über Maven auschecken? - weil ich den Prozess automatisieren möchte. – ant

+0

Ok. Ein Multimodul-Build wird über Hudson für CI ausgecheckt oder Sie checken den Baum mit einem einzigen Befehl aus. Es gibt keine Notwendigkeit, das in Maven selbst zu tun .. Vielleicht bin ich eine Sache ... – khmarbaise

+0

@khmarbaise die Sache ist, dass ich bestimmte Untermodule nicht alle – ant

3

Für die Erstellung mehrerer Module müssen normalerweise die untergeordneten Module im Verzeichnis des übergeordneten Moduls enthalten sein. Aber es scheint keinen Weg für Hudson/Jenkins zu geben, diese Art von Struktur zu erstellen, solange nicht alle Module in einem einzigen Baum in SCM sind. Für mein Projekt ist das nicht der Fall. Viele der Kinder sind in separaten Bäumen (auf Github). Es wäre sehr hilfreich, wenn Maven die Struktur erstellen könnte. Es muss in der Lage sein, dies nur mit dem Eltern-Pom zu tun, weil die Kinder nicht sichtbar sind, bis sie von scm geholt wurden.

+0

Hi auschecken möchte. Haben Sie also eine Lösung für dieses Problem gefunden? – aindl

+0

Nein. Ich gab den Multi-Modul-Build auf, als ich entdeckte, dass Maven eine Multi-Modul-Freigabe nicht korrekt ausführen würde, wenn die Module tatsächlich Submodule sind. Die Git-Operationen sind falsch. Ich habe das vor ein paar Monaten aufgegeben, also erinnere ich mich nicht an die Details. Also bauen und veröffentlichen wir die Module (10 davon) separat. – GrampaJohn

Verwandte Themen