Me dieron un proyecto de Maven para compilar e implementar en un servidor Tomcat. Nunca he usado Maven antes hoy, pero he estado buscando bastante en Google. Parece que los pom.xml
archivos de nivel superior en este proyecto tienen el tipo de empaquetado establecido como pom
.
¿Qué se supone que debo hacer después mvn install
de implementar esta aplicación? Esperaba poder encontrar un war
archivo en algún lugar o algo así, pero supongo que estoy buscando en el lugar equivocado o me falta un paso.
Respuestas:
pom
es básicamente un contenedor de submódulos, cada submódulo está representado por un subdirectorio en el mismo directorio quepom.xml
con elpom
empaquetado.En algún lugar, anidado dentro de la estructura del proyecto, encontrará artefactos (módulos) con
war
empaque. Maven generalmente construye todo en/target
subdirectorios de cada módulo. Así que despuésmvn install
busque en eltarget
subdirectorio en un módulo conwar
empaque.Por supuesto:
funciona igual de bien ;-).
fuente
pom packaging es simplemente una especificación que establece que el artefacto principal no es una guerra o un frasco, sino el pom.xml en sí.
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 debe construir 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 primario podría ser un PDF, pero ya está construido, y el trabajo para declararlo como un artefacto secundario podría ser deseable en la configuración para decirle a Maven cómo construir un PDF que no necesita compilado
fuente
El empaquetado
pom
se utiliza 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>
agregar otros directorios, y la salida real es el resultado de uno de los otros (probablemente sub) directorios. Si se codifica con sensatez para este propósito, tendrá un embalaje dewar
.fuente
Para responder a su pregunta simplemente cuando realiza un mvn: install , maven creará un artefacto empaquetado basado en ( atributo de empaquetado en pom.xml). Después de ejecutar su instalación de maven, puede encontrar el archivo con la extensión .package
fuente
Empaquetar un artefacto como POM significa que tiene un ciclo de vida muy simple
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 paquetes.
Utilizamos empaques de pom para muchos de nuestros proyectos y vinculamos fases y objetivos adicionales según corresponda.
Por ejemplo, algunas de nuestras aplicaciones usan:
Cuando instale la aplicación, debe agregarla a su repositorio local .m2. Para publicar en otro lugar, deberá configurar la información de administración de distribución correcta. Es posible que también necesite usar el complemento auxiliar de Maven Builder, si Maven no adjunta automáticamente los artefactos.
fuente
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 del proyecto my-app. Entonces, para agrupar dos proyectos en uno, tenemos pom.xml de nivel superior que menciona cuáles son los proyectos (módulos según la terminología de Maven) que se agruparán finalmente. Tal nivel superior pom.xml puede usar empaque de pom.
my-webapp puede tener un paquete de guerra y puede depender de my-app. my-app puede tener envases de jarra.
fuente
Caso de uso de la vida real
En una empresa pesada en Java, teníamos un proyecto de Python que necesitaba entrar en un repositorio de artefactos Nexus. Python realmente no tiene artefactos, así que simplemente quería .tar o .zip los archivos de python y presionar. El repositorio ya tenía integración maven, por lo que utilizamos
<packaging>pom</packaging>
designador con el complemento de ensamblaje maven para empaquetar el proyecto python como a.zip
y subirlo.Los pasos se describen en esta publicación SO
fuente
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 un paquete / contenedor externo como mvn clean compile install. entonces 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.
fuente
https://maven.apache.org/pom.html
El tipo de empaquetado debe ser pom para proyectos primarios y de agregación (módulos múltiples). Estos tipos definen los objetivos vinculados a un conjunto de etapas del ciclo de vida. Por ejemplo, si el empaquetado es jar, la fase del paquete ejecutará el objetivo jar: jar. Si el paquete es pom, el objetivo ejecutado será sitio: adjuntar descriptor
fuente
POM (Project Object Model) no es más que el script de automatización para construir el proyecto, podemos escribir el script de automatización en XML, los archivos de script de construcción se nombran de manera diferente en diferentes herramientas de automatización
como llamamos build.xml en ANT, pom.xml en MAVEN
MAVEN puede empaquetar frascos, guerras, oídos y POM, algo nuevo para todos nosotros
si quieres ver QUÉ ES POM.XML
fuente