2016-03-21 12 views
1

Ich baue eine Multiplattform javafx-Anwendung. Der letzte Prozess besteht darin, ein Installationsprogramm (exe, dmg, deb .. mit jre gebündelt) zu erstellen und es in ein spezielles "Produktfreigabe" -Repo hochzuladen. Angesichts der Tatsache, wie javafx build durchgeführt werden muss, wird auf drei verschiedenen Plattformen ein jenkins-Matrix-Job ausgeführt. Der letzte Schritt ist die Bereitstellung. Ich füge das Installationsprogramm mit dem Build-Helfer-Maven-Plugin an.Maven Bereitstellung ohne Hochladen von Pom-Datei

Ich bin in der Lage, das Installationsprogramm für eine Plattform korrekt zu laden, aber weil die Bereitstellung scheint die Pom-Datei hochladen, kann nicht erneut von einem anderen Jenkins-Slave hochgeladen werden.

Zuerst hatte ich Probleme mit dem Hochladen des "main jar", aber ich schaffte es das zu deaktivieren, indem ich das jar plugin mit 'none' Phase verband (ich benutze das maven-javafx-plugin, das ein eigenes Hauptkrug erstellt). Ich kann die Pom-Generierung und das Hochladen jedoch nicht deaktivieren. Ich habe

<generatePom>false</generatePom> 

für das Maven-deploy-Plugin gesetzt, aber es scheint keine Wirkung (ich nehme an, es für das Haupt Glas arbeitet, die ich bereits deaktiviert haben).

Ist es möglich, die Pom-Generierung/den Upload vollständig zu deaktivieren (ähnlich der Option "uploadDescriptor false" von "grddle") und nur "angefügte Artefakte" hochzuladen?

EDIT/HINWEIS: Ich wahrscheinlich die deploy Datei Option versuche nächste, https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html, aber es wäre schön zu wissen, ob dies auf der gesamten Projektebene erfolgen kann

+0

Sie veröffentlichen Repo ein Maven Repo in einer Art Nexus/Artefactory/Archiva basiert? BTW: ' ..' existiert nicht für [maven-deploy-plugin] (https://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html), so dass es nicht möglich ist Habe keinen Effekt ... – khmarbaise

+0

Ja, Nexus. Dasselbe wie der zentrale Proxy/firmeninterne, aber dieser hat einen anderen Verzeichnispfad. Es ist mehr oder weniger "ein Trick", etwas von den jenkins-Slave-Knoten auf eine corrent-Festplatte mit denselben Anmeldeinformationen zu übertragen. Nach dem Upload ist es egal, dass es sich um ein Maven-Repo handelt (d. H., Die Distribution verwendet nur die Festplatte) –

+0

Also, wenn Sie solche Art von Repo verwenden, warum ist es ein Problem, Pom-Dateien drin? Vielleicht musst du einen anderen Weg gehen. Stellen Sie die resultierenden Build-Artefakte auf das Nexus (Repository) und mit einem Post-Schritt in Jenkins können Sie die Artefakte (nur Installer) erhalten und sie in das Release-Repo ...Aber wenn es auf Maven basiert, benötigen Sie Pom-Dateien ... – khmarbaise

Antwort

-2

Die maven-deploy-plugin hat die Konfigurationsoption skip, die eine nimmt boolescher Wert und unterdrückt die Ausführung dieses Plugins, wenn es auf true gesetzt ist.

Ich denke, das ist, was Sie suchen.

Apache Maven Deploy Plugin documentation

+1

Dies wird auch die Bereitstellung von jeder Art von Artefakt nicht nur die 'pom.xml' Dateien zu unterdrücken .... – khmarbaise

0

ich es geschafft, dieses Problem zu lösen. Ich habe es mit der Option deploy-file gemacht:

Ich band die Standard-deploy zu keiner, um es zu deaktivieren. Dann habe ich eine neue "native-deploy" -Ausführung gemacht, die ich an die deploy-Phase gebunden habe. In seiner Konfiguration lege ich generatePom false ab und zeige die Datei auf dieselbe Datei an, die ich zuvor verwendet habe, um sie als Side-Artefakt anzuhängen (über das Build-Helper-Plugin). Ich musste die Coodrinate wieder setzen (d. H. Passtrough vom Projekt. *). Aber hat funktioniert und hochgeladen die Installer von allen Maschinen ohne Pom-Dateien. Ich musste die Standard-JAR-Erstellung wieder aktivieren, da maven sich darüber beschwert hat, dass kein Artefakt gebunden ist (ich denke, ich könnte die Pom-Verpackung ändern, es wird sowieso nicht hochgeladen, da der Standard-Upload deaktiviert ist, also ok).

Ich denke, wenn es eine allgemeinere Lösung gibt, wäre es die richtige Antwort, aber für mich ist das genug.

+0

würde nicht verwenden 'wagon-maven-plugin' ist eine einfachere Option? https://stackoverflow.com/a/42468595/318054 – fnt

Verwandte Themen