146 votes

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

On m'a donné un projet maven pour compiler et se déployer sur un serveur tomcat. Je n'avais jamais utilisé Maven avant aujourd'hui, mais je cherchais beaucoup sur Google. Il semble que le type de packaging des fichiers pom de niveau supérieur de ce projet soit "pom".

Qu'est-ce que je suis supposé faire après "installer MVN" pour que cette application soit déployée? Je m'attendais à pouvoir trouver un fichier de guerre quelque part ou quelque chose, mais je suppose que je cherche au mauvais endroit ou que je manque une étape.

123voto

Tomasz Nurkiewicz Points 140462

pom est en fait un conteneur de submodules, chaque sous-module est représenté par un sous-répertoire dans le répertoire pom.xml avec pom emballage.

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

Bien sûr:

$ find . -iname "*.war"

fonctionne aussi bien ;-).

36voto

Edwin Buck Points 33097

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

Il est souvent utilisé en conjonction avec des "modules" qui sont généralement contenus dans des sous-répertoires du projet en question; toutefois, il peut également être utilisé dans certains scénarios où aucun primaire binaire devait être construit, tous les autres objets importants ont été déclarés comme secondaire artefacts

Penser à une "documentation" du projet, le principal artefact peut être un document PDF, mais il est déjà construit, et le travail de la déclarer comme secondaire artefact peut être voulu par rapport à la configuration de dire maven comment générer un fichier PDF qui n'a pas besoin de compilation.

19voto

bmargulies Points 49855

Un packaging de pom est utilisé dans les projets qui regroupent d'autres projets et dans les projets dont le seul résultat utile est un artefact attaché provenant d'un plugin. Dans votre cas, je suppose que votre pom de niveau supérieur inclut <modules>...</modules> pour agréger d’autres répertoires, et que la sortie réelle est le résultat de l’un des autres (probablement) sous-répertoires. Si, à cet effet, il est codé de manière judicieuse, son emballage sera de war .

7voto

James Morgan Points 11

L'emballage d'un artefact en tant que POM signifie qu'il est très simple de cycle de vie

package -> install -> deploy

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

Ceci est utile si vous déployez une pom.xml fichier ou un projet qui ne cadrent pas avec les autres types d'emballage.

Nous utilisons pom emballage pour beaucoup de nos projets et de lier supplémentaire phases et objectifs appropriés

Par exemple, certains de nos applications utilisent

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

Lorsque vous mvn installer l'application, il doit l'ajouter à votre local .m2 référentiel. Publier par ailleurs vous aurez besoin de mettre en place correcte de gestion de la distribution de l'information. Vous pouvez également utiliser le maven constructeur helper plugin si les artefacts ne sont pas automatiquement jointe à par Maven

6voto

Prasanna Talakanti Points 1394

Pour simplement répondre à votre question, quand tu fais un mvn:installer, maven va créer un emballés artefact, fondés surl'emballage de l'attribut pom.xml), Après l'exécution de maven installer, vous pouvez trouver le fichier .package d'extension

  • Dans le répertoire cible de l'espace de travail de projet
  • Aussi lorsque votre maven 2 référentiel local est à la recherche pour le (.m2/respository) sur votre box, votre œuvre est répertoriée .m2 référentiel (groupId/artifactId/artifactId-version.l'emballage) répertoire
  • Si vous regardez dans le répertoire, vous trouverez emballés extension de fichier et aussi pom extension (pom extension est essentiellement la pom.xml utilisé pour générer ce package)
  • Si votre projet maven est multi-module chaque module de deux fichiers, comme décrit ci-dessus, sauf pour le haut niveau projet qui n'aura qu'un pom

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: