Ich erhielt ein Maven-Projekt zum Kompilieren und Bereitstellen auf einem Tomcat-Server. Ich habe heute noch nie Maven benutzt, aber ich habe ziemlich viel gegoogelt. Anscheinend haben die pom.xml
Dateien der obersten Ebene in diesem Projekt den Verpackungstyp festgelegt pom
.
Was soll ich tun mvn install
, um diese Anwendung bereitzustellen? Ich hatte erwartet, war
irgendwo oder so etwas eine Datei finden zu können , aber ich schätze, ich suche an der falschen Stelle oder verpasse einen Schritt.
Antworten:
pom
ist im Grunde ein Container von Submodulen, jedes Submodul wird durch ein Unterverzeichnis im selben Verzeichnis wiepom.xml
beimpom
Packen dargestellt.Irgendwo in der Projektstruktur finden Sie Artefakte (Module) mit
war
Verpackung. Maven baut im Allgemeinen alles in/target
Unterverzeichnisse jedes Moduls ein. Also nach einemmvn install
Blick in dastarget
Unterverzeichnis in einem Modul mitwar
Verpackung.Natürlich:
funktioniert genauso gut ;-).
quelle
POM-Verpackung ist einfach eine Spezifikation, die besagt, dass das primäre Artefakt kein Krieg oder Glas ist, sondern die pom.xml selbst.
Oft wird es in Verbindung mit "Modulen" verwendet, die normalerweise in Unterverzeichnissen des betreffenden Projekts enthalten sind. Es kann jedoch auch in bestimmten Szenarien verwendet werden, in denen keine primäre Binärdatei erstellt werden sollte. Alle anderen wichtigen Artefakte wurden als sekundäre Artefakte deklariert
Stellen Sie sich ein "Dokumentations" -Projekt vor, das primäre Artefakt ist möglicherweise ein PDF, aber es ist bereits erstellt, und die Arbeit, es als sekundäres Artefakt zu deklarieren, ist möglicherweise über die Konfiguration erwünscht, um Maven mitzuteilen, wie ein PDF erstellt werden soll, das nicht benötigt wird zusammengestellt.
quelle
Das Packaging von
pom
wird in Projekten verwendet, die andere Projekte zusammenfassen, und in Projekten, deren einzige nützliche Ausgabe ein angehängtes Artefakt eines Plugins ist. In Ihrem Fall würde ich vermuten, dass Ihr POM der obersten Ebene<modules>...</modules>
andere Verzeichnisse aggregiert, und die tatsächliche Ausgabe ist das Ergebnis eines der anderen (wahrscheinlich Unter-) Verzeichnisse. Es wird, wenn es für diesen Zweck sinnvoll codiert ist, eine Verpackung von habenwar
.quelle
Um einfach Ihre Frage zu beantworten , wenn Sie einen tun mvn: installieren , maven wird ein verpacktes Artefakt erstellen auf Basis von ( Verpackungs Attribute in pom.xml) Nachdem Sie Ihre Maven ausführen installieren Sie die Datei mit .package Erweiterung finden
quelle
Das Verpacken eines Artefakts als POM bedeutet, dass es einen sehr einfachen Lebenszyklus hat
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Dies ist nützlich, wenn Sie eine pom.xml-Datei oder ein Projekt bereitstellen, das nicht zu den anderen Verpackungstypen passt.
Wir verwenden POM-Verpackungen für viele unserer Projekte und binden gegebenenfalls zusätzliche Phasen und Ziele.
Einige unserer Anwendungen verwenden beispielsweise:
Wenn Sie die Anwendung mvn installieren, sollte sie Ihrem lokalen .m2-Repository hinzugefügt werden. Um an anderer Stelle zu veröffentlichen, müssen Sie die richtigen Informationen zur Verteilungsverwaltung einrichten. Möglicherweise müssen Sie auch das Maven Builder-Hilfsprogramm verwenden, wenn Artefakte von Maven nicht automatisch angehängt werden.
quelle
Ich schlage vor, das klassische Beispiel unter http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once zu sehen
Hier ist my-webapp ein Webprojekt, das vom Code in my-app project abhängt. Um zwei Projekte in einem zu bündeln, haben wir pom.xml der obersten Ebene, in der angegeben ist, welche Projekte (Module gemäß Maven-Terminologie) endgültig gebündelt werden sollen. Solche pom.xml der obersten Ebene können Pom-Verpackungen verwenden.
my-webapp kann Kriegspakete haben und von my-app abhängig sein. my-app kann Glasverpackungen haben.
quelle
Realer Anwendungsfall
In einem Java-lastigen Unternehmen hatten wir ein Python-Projekt, das in ein Nexus-Artefakt-Repository verschoben werden musste. Python hat nicht wirklich Artefakte, wollte also einfach nur die Python-Dateien .tar oder .zip. Und pushen. Das Repo hatte bereits eine Maven-Integration, daher haben wir den
<packaging>pom</packaging>
Bezeichner mit dem Maven-Assembly-Plugin verwendet, um das Python-Projekt als zu verpacken.zip
und hochzuladen.Die Schritte werden in diesem SO-Beitrag beschrieben
quelle
"Pom" -Verpackung ist nichts anderes als der Behälter, der andere Verpackungen / Module wie Glas, Krieg und Ohr enthält.
Wenn Sie eine Operation an einem äußeren Paket / Container wie mvn clean compile install ausführen. dann werden auch innere Pakete / Module sauber kompiliert.
Es ist nicht erforderlich, für jedes Paket / Modul eine separate Operation auszuführen.
quelle
https://maven.apache.org/pom.html
Der Verpackungstyp, der für übergeordnete Projekte und Aggregationsprojekte (Multimodule) angegeben werden muss. Diese Typen definieren die Ziele, die an eine Reihe von Lebenszyklusphasen gebunden sind. Wenn die Verpackung beispielsweise jar ist, führt die Paketphase das Ziel jar: jar aus. Wenn die Verpackung pom ist, lautet das ausgeführte Ziel site: attach-descector
quelle
POM (Project Object Model) ist nichts anderes als das Automatisierungsskript zum Erstellen des Projekts. Wir können das Automatisierungsskript in XML schreiben. Die Erstellungsskriptdateien werden in verschiedenen Automatisierungstools unterschiedlich benannt
wie wir build.xml in ANT nennen, pom.xml in MAVEN
MAVEN kann Gläser, Kriege, Ohren und POM verpacken, was für uns alle neu ist
Wenn Sie möchten, überprüfen Sie, WAS POM.XML IST
quelle