Qu'est-ce que "pom" emballage dans maven?

j'ai reçu un projet maven pour compiler et être déployé sur un serveur tomcat. Je n'ai jamais utilisé de maven avant aujourd'hui, mais j'ai été googler un peu. Il semble que les fichiers de haut niveau pom.xml dans ce projet ont le type d'emballage défini comme pom .

Que dois-je faire après mvn install pour déployer cette application? Je m'attendais à trouver un fichier war quelque part ou quelque chose, mais je suppose que je cherche dans le mauvais endroit ou manque une étape.

139
demandé sur Kasun Siyambalapitiya 2011-10-07 23:45:38

10 réponses

pom est essentiellement un conteneur de sous-modules, chaque sous-module est représenté par un sous-répertoire dans le même répertoire que pom.xml avec pom emballage.

quelque part, imbriqué dans la structure du projet, vous trouverez des artefacts (modules) avec war emballage. Maven construit généralement tout dans les sous-répertoires /target de chaque module. Donc après mvn install regardez dans target sous-répertoire dans un module avec war emballage.

bien sûr:

$ find . -iname "*.war"

fonctionne également bien ;-).

115
répondu Tomasz Nurkiewicz 2011-10-07 19:51:04

pom emballage est tout simplement un cahier des charges qui indique le principal artefact n'est pas une guerre ou un bocal, mais le pom.xml lui-même.

souvent il est utilisé en conjonction avec des" modules "qui sont typiquement contenus dans les sous-répertoires du projet en question; cependant, il peut également être utilisé dans certains scénarios où aucun binaire primaire était censé être construit, tous les autres Artéfacts importants ont été déclarés comme Artéfacts secondaires

pensez à un "documentation" projet, l'artéfact primaire pourrait être un PDF, mais il est déjà construit, et le travail de le déclarer comme un Artéfact secondaire pourrait être souhaitable sur la configuration pour dire à maven comment construire un PDF qui n'a pas besoin compilé.

31
répondu Edwin Buck 2012-07-17 14:57:15

Emballage pom est utilisé dans des projets d'agrégation d'autres projets, et dans des projets dont la seule utilité de sortie est reliée à une artefact de certains plugin. Dans votre cas, je deviner que votre pom de haut niveau inclut <modules>...</modules> pour agréger d'autres annuaires, et la sortie réelle est le résultat de l'un des autres (probablement des sous-) annuaires. Si elle est codée raisonnablement à cet effet, elle aura un emballage de war .

17
répondu bmargulies 2011-10-07 19:51:29

pour répondre simplement à votre question lorsque vous faites un mvn:install , maven créera un artefact empaqueté basé sur ( packaging attribut dans pom.xml), Après l'exécution de maven installer, vous pouvez trouver le fichier .package extension

  • Dans le répertoire cible de l'espace de travail de projet
  • Aussi où votre maven 2 référentiel local est la recherche d' ( .m2 / respository ) sur votre boîte, votre artefact est répertorié dans .dépôt m2 sous ( groupId/artifactId / artifactId-version.emballage ) répertoire
  • si vous regardez sous le répertoire, vous trouverez packaged extension fichier et aussi extension pom (extension pom est essentiellement le pom.xml utilisé pour générer ce paquet)
  • si votre projet maven est multi-module chaque module aura deux fichiers comme décrit ci-dessus sauf pour le haut niveau projet qui n'aura qu'un pom
6
répondu Prasanna Talakanti 2011-10-07 20:16:25

emballer un artefact comme POM signifie qu'il a un cycle de vie très simple

package -> install -> deploy

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

c'est utile si vous déployez un pom.un fichier xml ou un projet qui ne correspond pas aux autres types d'empaquetage.

nous utilisons l'emballage pom pour beaucoup de nos projets et lions des phases et des objectifs supplémentaires selon les besoins.

par exemple, certaines de nos applications utilisent:

prepare-package -> test -> package -> install -> deploy

lorsque vous installez l'application mvn il doit l'ajouter à votre local .dépôt en m2. Pour publier ailleurs, vous aurez besoin de mettre en place des informations correctes de gestion de la distribution. Vous pouvez également avoir besoin d'utiliser le plugin Maven builder helper, si les Artéfacts ne sont pas automatiquement attachés à par Maven.

6
répondu James Morgan 2016-05-11 03:19:47

je suggère de voir l'exemple classique à: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once

ici mon-webapp est web project, qui dépend du code à mon-app project. Donc pour regrouper deux projets en un, nous avons des pom de haut niveau.xml qui mentionne quels sont les projets (modules selon la terminologie maven) à être enfin regroupés. Quel haut niveau de pom.xml peut utiliser l'empaquetage pom.

mon-webapp peut avoir un packaging de guerre et peut dépendre de mon-application. mon application peut avoir jar emballage.

3
répondu Vishal 2015-04-09 06:52:10

"151930920 la" Vraie vie " cas d'utilisation

dans une entreprise Java-heavy, nous avions un projet python qui devait entrer dans un dépôt D'artefacts Nexus. Python n'a pas vraiment d'artefacts, donc il suffit juste voulu .tar ou .fermez les fichiers python et poussez. Le repo avait déjà Maven integration, donc nous avons utilisé <packaging>pom</packaging> designator avec le Maven assembly plugin pour empaqueter le projet python comme un .zip et le télécharger.

les étapes sont décrites dans ce so post

1
répondu Adam Hughes 2018-01-05 16:35:15

https://maven.apache.org/pom.html

le type d'emballage devant être pom pour les projets parent et d'agrégation (multi-modules). Ces types définissent les objectifs liés à un ensemble d'étapes du cycle de vie. Par exemple, si l'emballage est jar, alors la phase paquet exécutera l'objectif jar:jar. Si l'emballage est pom, l'objectif sera exécuté site:fixez-descripteur

1
répondu TaylorChen 2018-04-08 07:42:32

POM (Project Object Model) n'est rien d'autre que le script d'automatisation pour la construction du projet,nous pouvons écrire le script d'automatisation en XML, les fichiers de script de construction sont nommés de manière diffrente dans différents outils D'automatisation

comme on appelle build.xml in ANT, pom.xml in MAVEN

MAVEN peut packages pots,les guerres, les oreilles et les POM qui chose de nouveau pour nous tous

si vous voulez cochez what IS POM.XML

0
répondu Venky Vungarala 2014-09-15 10:12:26

"pom" emballage n'est rien, mais le conteneur, qui contient d'autres packages/modules comme pot, la guerre, et de l'oreille.

si vous effectuez une opération sur un paquet/conteneur extérieur comme mvn clean compiler installer. ensuite, les paquets/modules internes obtiennent aussi une compilation propre.

il n'est pas nécessaire d'effectuer une opération distincte pour chaque colis/module.

0
répondu Abdul Gafoor 2018-02-23 11:00:27