Maven Jenkins/maven - abhängige Projekte automatisch bauen

  • Themenstarter Themenstarter xhi2018
  • Beginndatum Beginndatum
X

xhi2018

Gast
Hallo,

ich versuche aktuell noch testweise mit Jenkins 1.403 und maven 3.0.2 mehrere Java Projekte zu erstellen. Ich versuche mich aktuell noch in das Thema einzuarbeiten - also noch ein newbie... :rtfm:

Diese Java Projekte haben untereinander Abhängigkeiten - ungefähr so:
Code:
          core_Project
          /          \
    1a_Project     1b_Project
      |      \      /       |  
 2a_Project  2b_Project   2c_Project
                    \       /
                 3a_Project
In Jenkins hab ich die notwendigen maven Jobs angelegt. Die Projekte können auch einzeln, manuell und nacheinander gebaut werden. Soweit so gut.
Aber gibt es auch eine Möglichkeit die Module über Jenkins automatisch in der korrekten Abhängigkeitsreihenfolge bauen zu lassen..?

Also angenommen die abhängigen Module von
Code:
3a_Project
sind noch niemals gebaut worden und somit auch nicht über das maven Repository (maven-RepositoryManager und lokales maven-Repository) zu beziehen - sozusagen - build-from-scratch
Ich starte also den compile des Moduls
Code:
3a_Project
über Jenkins und aufgrund der Abhängigkeiten der Projekte werden die Projekte dann automatisch in dieser Reihenfolge über Jenkins/maven erstellt:
1.)
Code:
core_Project
2.)
Code:
1a_Project
und/oder
Code:
1b_Project
3.)
Code:
2b_Project
und/oder
Code:
2c_Project
4.)
Code:
3a_Project

Das Projekt
Code:
2a_Project
muss ich dann noch manuell bauen. Ich hoffe ich hab mich mit dem obigen Beispiel deutlich genug ausgedrückt, so dass jeder versteht was ich vor habe... 😉
Macht von Euch jemand schon so was in der Art, oder hat dergleichen schon mal versucht und könnte mir bitte einen Tipp geben wie ich das realisieren könnte..?

Bin für jeden Tipp dankbar!
 
Hi,

wenn die Projekte nicht in Form eines Multimodule Build zu bauen sind ist es am Einfachsten Up-Stream bzw. Downstream Abhängigkeiten zu definieren und somit eine Reihenfolge der Projekte festzulegen...

Gruß
Karl Heinz Marbaise
 
Hallo,

danke für Deine Antwort!
Verstehe ich dass dann richtig - ich habe Jenkins die Reihenfolge der zu bauenden Projekte über Up- bzw. Downstream Abhängigkeiten fest vorzugeben..?

Ich hatte gehofft, dass Jenkins in Tateinheit mit maven die Reihenfolge automatisch ermittelt und die Projekte dann so nacheinander baut. Hintergrund der Frage ist die Hoffnung, dass wenn neue Projekte bzw. Abhängigkeiten hinzukommen die Projekte dann automatisch immer in der richtigen Reihenfolge gebaut werden - scheint dann wohl nicht so zu sein. 🙁

Ich werd' wohl die Buildreihenfolge manuell vorgeben müssen oder hab ich Deine Antwort falsch verstanden ???:L

Das mit den fingerprints in Jenkins scheint mich - soweit ich es verstehe - nicht zu meinen gewünschten Ziel führen, oder..?

btw: Bei allen meinen Projekten handelt es sich um maven MultiModule Projekte.

Gruß und danke wenn Du noch ein paar Tipps oder Ideen hast 😉
 
Hallo,

btw: Bei allen meinen Projekten handelt es sich um maven MultiModule Projekte.
also ist der Baum den
Du aufgemalt hast ein Projekt bestehend aus mehreren Modulen?

also hast du eine Struktur wie folgt:

Code:
  + pom.xml
  +-- module-a
           +-- pom.xml
  +-- module-b
           +-- pom.xml
  +-- module-c
           +-- pom.xml
  +-- module-d
           +-- pom.xml
  ...
und Du baust mit Maven auf der obersten Ebene einfach per mvn clean package etc. ?
Wenn Ja brauchst Du nur ein Projekt vom Typ: Maven 2/3 anzulegen und dort zum auschecken die entsprechende URL anzugeben und dann sollte das Problem gelöst sein...
Ansonsten Poste mal einen Kleines Beispiel was ungefähr Deinem Layout entspricht hier...dann kann man mehr sagen...

Gruß
Karl Heinz Marbaise
 
Hallo,

danke nochmal für Deine Hilfe.
also ist der Baum den Du aufgemalt hast ein Projekt bestehend aus mehreren Modulen?
...
Ansonsten Poste mal einen Kleines Beispiel was ungefähr Deinem Layout entspricht hier...dann kann man mehr sagen...
meine Struktur sie wie folgt aus:
Code:
+ core_Project         |  + 1a_Project           |  + xn_Project        
  +--pom.xml           |    +--pom.xml           |    +--pom.xml       
  +-- module           |    +-- module           |    +-- module
      +-- pom.xml      |        +-- pom.xml      |        +-- pom.xml    
  +-- module           |    +-- module           |    +-- module
      +-- pom.xml      |        +-- pom.xml      |        +-- pom.xml    
  +-- module           |    +-- module           |    +-- module
      +-- pom.xml      |        +-- pom.xml      |        +-- pom.xml    
  ...                  |    ...                  |    ...
was ich damit aussagen will, ist folgendes. Jedes der oben im Baum abgebildeten Projekte ist ein eigenes "MultiModul" Projekt gemäß der von Dir aufgezeichneten Struktur. Das
Code:
core_Project
sowie die xx
Code:
_Project
haben eine
Code:
pom.xml
und darunter befinden sich wieder 1+x
Code:
pom.xml
für die Module in diesem xx
Code:
_Project

Die Module in den einzelnen xx
Code:
_Project
werden automatisch in der richtigen Reihenfolge gebaut. Nun wäre es für mich noch eine erhebliche Erleichterung wenn die einzelnen xx
Code:
_Project
auch noch automatisch in einer richtigen Reihenfolge über Jenkins/maven gebaut werden könnten.

danke schon mal für jeden Tipp und Hilfe! 🙂
 
Hallo,
Baut denn Maven die Module in der richtigen Reihenfolge?
ja das geht - bei einer Struktur die so aussieht:
Code:
project
  +-- pom.xml
  +-- module-a
           +-- pom.xml
  +-- module-b
           +-- pom.xml
  +-- module-c
           +-- pom.xml
  +-- module-d
           +-- pom.xml
und wenn die
Code:
dependencies
zwischen den
Code:
module-x
definiert sind, dann starte ich maven mit der Angabe der
Code:
project pom.xml
und maven baut die
Code:
module-x
in der richtigen Reihenfolge und danach dann noch das
Code:
project
.
 
Die Module in den einzelnen xx_Project werden automatisch in der richtigen Reihenfolge gebaut. Nun wäre es für mich noch eine erhebliche Erleichterung wenn die einzelnen xx_Project auch noch automatisch in einer richtigen Reihenfolge über Jenkins/maven gebaut werden könnten.
Wenn die xx_Project Poms nur Dependencies auf einander haben aber keine Module eines Projektes sind, dann musst du das eben manuell über Up bzw. Downstream Projekte in Jenkins lösen.
 

Neue Themen


Zurück
Oben