it-swarm.com.de

Gibt es eine Möglichkeit, das Arbeitsverzeichnis eines Jenkins Maven Builds zu ändern?

Gibt es eine Möglichkeit, das Arbeitsverzeichnis eines Jenkins Maven Builds zu ändern?

Anwendungsfall

Es gibt einen Maven-Build, der nur funktioniert, wenn das aktuelle Arbeitsverzeichnis das Verzeichnis mit pom.xml ist. Ich möchte, dass der Maven-Build in diesem Verzeichnis ausgeführt wird.

Das Verzeichnis mit der Datei pom.xml befindet sich in einem Unterverzeichnis eines git-Projekts.

28
Max Nanasy

Erstellen Sie ein Ziel, um das übergeordnete Objekt zu überprüfen.

  • Überprüfen Sie das übergeordnete Verzeichnis Ihres Build-Ziels
  • Set Build -> Goal = clean
  • Führen Sie build aus und ermitteln Sie das Zielarbeitsbereichsverzeichnis (zweite Zeile der Konsolenausgabe in meinem Beispiel/var/lib/jenkins/workspace/mein_projekt).

Erstellen Sie ein Ziel, um Ihren Pfad zu erstellen

  • Aktivieren Sie NICHT die Option "Arbeitsbereich vor dem Start des Builds löschen".
  • In Build -> Advanced - Aktivieren Sie das Kontrollkästchen "Ordner des Arbeitsbereichs ändern" und fügen Sie Ihr/Ihr Zielverzeichnis ein

Es hat für mich funktioniert.

12
ton

Nicht sicher, wann dies hinzugefügt wurde, aber für die Jenkins vor mir (Jenkins ver. 1.627 pro Ende der Seite) gibt es jetzt eine Option zum Definieren, wo sich die Wurzel pom.xml befindet (die Hilfemeldung sagt: 

Wenn sich in Ihrem Arbeitsbereich die oberste Ebene pom.xml an einer anderen Stelle als .__ befindet. Geben Sie im Stammverzeichnis des ersten Moduls den Pfad (relativ zum Modulstamm) an, wie z. B. parent/pom.xml. Bleibt das Feld leer, wird der Standardwert. pom.xml

). Ich war mit dem gleichen Problem konfrontiert, aber dann wurde mir klar, dass die Antwort mir ins Gesicht starrte (beachten Sie, dass ich nicht weiter vorrücken musste, wie Hua2308 vorschlug, wahrscheinlich weil sie die Benutzeroberfläche geändert hatten).

10
Foon

Für eine Referenz hier ist was für mich funktioniert. Im Erstellungsschritt "Top-Level-Maven-Ziele aufrufen" gibt es die Schaltfläche "Erweitert ...". Wenn Sie auf diese Schaltfläche klicken, können Sie den relativen Pfad zu Ihrer POM.xml-Datei angeben. Dies sollte sicherstellen, dass Sie nur das gewünschte Projekt im Unterverzeichnis erstellen.

3
Hua2308

Sie können Maven's -f Option verwenden

-f,--file <arg>    Force the use of an alternate POM file (or directory with pom.xml).

Zum Beispiel, wenn Ihr Projekt eine Struktur hat:

README.md
sources
|----pom.xml
|----services
|    |----pom.xml
|    +----src
|----webservices
|    |----pom.xml
|    +----src
+----....
useful
docs

dann können Sie Goals in Invoke top-level Maven targets verwenden:

-f sources/pom.xml clean install
2
madhead

Gehen Sie zur Konfiguration Ihres Maven-Projekts und dann:

Erstellen> Klicken Sie auf die Schaltfläche "Erweitert"> Aktivieren Sie "Benutzerdefinierten Arbeitsbereich verwenden"> Legen Sie das Verzeichnis fest

(Ich verwende Jenkins Version 1.508)

1
tbrugz

Die Jenkins, mit denen wir arbeiten, sind in deutscher Sprache, daher versuche ich zu erraten, wie die Optionen übersetzt werden.

Gehen Sie zur Konfiguration Ihres Projekts und dort zur erweiterten Projektkonfiguration (es ist der zweite Abschnitt), und erweitern Sie sie. Der letzte Punkt sollte etwas wie Change folder of workspace sein. Ich denke, das ist, wonach Sie suchen.

Andernfalls können Sie jederzeit zu den Optionen für Build wechseln und den Pfad zu Ihrer pom.xml ändern

0
André Stannek

Lösung:

cd subfolder; mvn -f ../pom.xml task

Maven bietet keine Option, um es umgekehrt zu machen, was den vernünftigen Weg für diesen Anwendungsfall bedeutet, wahrscheinlich weil Maven Sie hasst.

0
tkruse

Wenn das Unterverzeichnis ein direktes untergeordnetes Verzeichnis des übergeordneten Stammverzeichnisses ist, können Sie mvn --projects verwenden, da sich dieses in das Unterverzeichnis ändert. Hier ein Beweis (siehe letzte Zeile):

U:\git\ics-VCCUSTOM-422>mvn --projects icsIntegrationTest clean verify
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.afklm.vccustom:icsIntegrationTest >----------------
[INFO] Building icsIntegrationTest 13.3.4-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ icsIntegrationTest ---
[INFO] Deleting U:\git\ics-VCCUSTOM-422\icsIntegrationTest\target
[INFO]
[INFO] --- buildnumber-maven-plugin:1.3:create (default) @ icsIntegrationTest ---
[INFO] ShortRevision tag detected. The value is '7'.
[INFO] Executing: cmd.exe /X /C "git rev-parse --verify --short=7 HEAD"
[INFO] Working directory: U:\git\ics-VCCUSTOM-422\icsIntegrationTest
0