proyecto plugin org how desplegar deploy application java tomcat maven

java - plugin - ¿Qué es el empaque "pom" en maven?



tomcat 8 maven plugin (10)

Me dieron un proyecto de maven para compilar y desplegarme en un servidor tomcat. Nunca he usado maven antes de hoy, pero he estado buscando en Google bastante. Parece que los archivos pom.xml nivel superior en este proyecto tienen el tipo de paquete configurado como pom .

¿Qué se supone que debo hacer después de mvn install para implementar esta aplicación? Esperaba poder encontrar un archivo de war algún lugar o algo así, pero creo que estoy buscando en el lugar equivocado o faltando un paso.


El empaque "pom" no es más que el contenedor, que contiene otros paquetes / módulos como jar, war y ear.

si realiza alguna operación en el paquete / contenedor externo como mvn clean compile install. luego los paquetes / módulos internos también obtienen una instalación de compilación limpia.

no es necesario realizar una operación separada para cada paquete / módulo.


El empaque de pom es simplemente una especificación que establece que el artefacto primario no es una guerra o un contenedor, sino el propio pom.xml.

A menudo se usa junto con "módulos" que normalmente están contenidos en subdirectorios del proyecto en cuestión; sin embargo, también se puede usar en ciertos escenarios donde no se creó ningún binario primario, todos los demás artefactos importantes se han declarado como artefactos secundarios.

Piense en un proyecto de "documentación", el artefacto principal podría ser un PDF, pero ya está construido, y el trabajo para declararlo como un artefacto secundario podría ser deseado sobre la configuración para decirle a maven cómo construir un PDF que no necesita compilado.


El empaquetado de pom se usa en proyectos que agregan otros proyectos y en proyectos cuyo único resultado útil es un artefacto adjunto de algún complemento. En su caso, supongo que su pom de nivel superior incluye <modules>...</modules> para agregar otros directorios, y el resultado real es el resultado de uno de los otros (probablemente sub) directorios. Si está codificado sensiblemente para este propósito, tendrá un paquete de war .


Empaquetar un artefacto como POM significa que tiene un ciclo de vida muy simple

package -> install -> deploy

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

Esto es útil si está implementando un archivo pom.xml o un proyecto que no se ajusta a los otros tipos de empaque.

Usamos envases pom para muchos de nuestros proyectos y vinculamos fases y objetivos adicionales según corresponda.

Por ejemplo, algunas de nuestras aplicaciones usan:

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

Cuando instale la aplicación, debería agregarla a su repositorio .m2 local. Para publicar en otro lugar, deberá configurar la información de administración de distribución correcta. También es posible que necesite utilizar el complemento auxiliar de constructor de maven, si Maven no conecta automáticamente los artefactos.


POM (Project Object Model) no es más que la secuencia de comandos de automatización para construir el proyecto, podemos escribir la secuencia de comandos de automatización en XML, los archivos de script de construcción se denominan diffrenetly en diferentes herramientas de automatización

como lo llamamos build.xml en ANT, pom.xml en MAVEN

MAVEN puede paquetes de jarras, guerras, orejas y POM, algo nuevo para todos nosotros

si quieres verificar QUÉ ES POM.XML


Para responder simplemente a su pregunta cuando realice un mvn:install , maven creará un artefacto empaquetado basado en (atributo de empaquetado en pom.xml). Después de ejecutar la instalación de maven, puede encontrar el archivo con la extensión .package

  • En el directorio de destino del espacio de trabajo del proyecto
  • También donde su repositorio local maven 2 está buscando ( .m2 / respository ) en su caja, su artefacto está listado en el repositorio .m2 en el directorio ( groupId / artifactId / artifactId-version.packaging )
  • Si mira debajo del directorio, encontrará el archivo de extensión empaquetado y también la extensión pom (la extensión pom es básicamente el pom.xml usado para generar este paquete)
  • Si su proyecto maven es multimodulo, cada módulo tendrá dos archivos como se describe arriba, excepto para el proyecto de nivel superior que solo tendrá un pom

Sugiero ver el ejemplo clásico en: http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once

Aquí my-webapp es un proyecto web, que depende del código en mi proyecto de aplicación. Entonces, para agrupar dos proyectos en uno, tenemos el pom.xml de nivel superior que menciona cuáles son los proyectos (módulos según la terminología de maven) que se incluirán finalmente. Tal pom.xml de nivel superior puede usar un paquete de pom.

my-webapp puede tener embalajes de guerra y puede tener dependencia en my-app. my-app puede tener envases de tarro.


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

El tipo de paquete requiere ser pom para proyectos principales y de agregación (multi-módulo). Estos tipos definen los objetivos vinculados a un conjunto de etapas del ciclo de vida. Por ejemplo, si el empaque es jar, entonces la fase del paquete ejecutará el objetivo jar: jar. Si el paquete es pom, el objetivo ejecutado será el sitio: attach-descriptor


pom es básicamente un contenedor de submódulos, cada submódulo está representado por un subdirectorio en el mismo directorio que pom.xml con el paquete pom .

En algún lugar, anidado dentro de la estructura del proyecto, encontrará artefactos (módulos) con embalaje de war . Maven generalmente construye todo en /target subdirectorios de /target de cada módulo. Entonces, después de mvn install busque en target subdirectorio de target en un módulo con empaque de war .

Por supuesto:

$ find . -iname "*.war"

funciona igual de bien ;-).


Caso de uso de la vida real

En una compañía pesada de Java, teníamos un proyecto de python que debía ingresar a un repositorio de artefactos de Nexus. Python en realidad no tiene artefactos, así que simplemente quería .tar o .zip los archivos python y push. El repositorio ya tenía integración con Maven, por lo que usamos el designador <packaging>pom</packaging> con el complemento maven assembly para empaquetar el proyecto python como .zip y cargarlo.

Los pasos se describen en esta publicación SO