java - que - pom maven
¿Cómo crear un proyecto Maven de múltiples módulos vacío? (8)
Aquí hay un screencast sobre cómo podrías hacerlo con Intellij Idea. Primero, comience un nuevo proyecto (Archivo -> Nuevo proyecto), elija ''Módulo Maven'':
Escriba un nombre, haga clic en siguiente, no cambie nada más en los siguientes pasos, haga clic en finalizar.
Ahora en tu pom.xml
escribe <packaging>
y habilita las actualizaciones automáticas:
Escriba en los módulos:
Coloca el cursor en m1
y presiona Alt + Intro .
El módulo m1
se agregará automáticamente a su proyecto. Ahora puedes hacer Alt + Enter para m2
y eso es todo.
También puede comenzar agregando pom.xml
para un módulo existente de su proyecto: haga clic derecho sobre él en el árbol del proyecto, ''Agregar soporte de marco ...'', elija ''Maven''. Esto creará un pom.xml
.
En este momento, suelo encontrar un archivo pom.xml
en la web que tiene un paquete de pom
y copiarlo y pegarlo para crear mi proyecto principal. Luego solía ejecutar archetype:create
dentro del directorio padre para crear submódulos pero archetype:create
ha vuelto obsoleto desde entonces.
¿Alguna recomendación sobre cómo crear nuevos proyectos de múltiples módulos Maven?
Considere los marcadores de proyecto de un padre y 3 sub módulos de descanso, seguridad y modelo, haciendo referencia a los documentos de Spring . No tiene las dependencias como en el documento de Spring, solo la configuración básica desde el punto de vista de varios módulos.
Para crear un proyecto principal maven en modo no interactivo / modo por lotes
mvn archetype:generate /
-DarchetypeGroupId=org.codehaus.mojo.archetypes /
-DarchetypeArtifactId=pom-root /
-DarchetypeVersion=RELEASE /
-DgroupId=bookmarks /
-DartifactId=bookmarks /
-Dversion=0.0.1-SNAPSHOT /
-DinteractiveMode=false
Para crear submódulos en modo no interactivo / modo por lotes.
cd en su directorio raíz recién creado. Refiriéndose a la respuesta de @
-Dpackage es la estructura del paquete. Aquí están los marcadores. Si no se especifica, considerará el artifactId como paquete predeterminado
mvn archetype:generate /
-DarchetypeGroupId=org.apache.maven.archetypes /
-DarchetypeArtifactId=maven-archetype-quickstart /
-DarchetypeVersion=RELEASE /
-DgroupId=model /
-DartifactId=model /
-Dversion=0.0.1-SNAPSHOT /
-Dpackage=bookmarks /
-DinteractiveMode=false
Para crear un nuevo módulo en eclipse goto File-> new-> other-> maven-> maven module, esto aparece inmediatamente en eclipse workspace package explorer.
O desde cli, cd dentro de la carpeta principal, aquí marcadores y ejecute lo siguiente, creará el proyecto y luego tendrá que importar a eclipse como un proyecto maven, o puede trabajar desde el padre, aquí el proyecto de marcadores
mvn archetype:generate /
-DarchetypeGroupId=org.apache.maven.archetypes /
-DarchetypeArtifactId=maven-archetype-quickstart /
-DarchetypeVersion=RELEASE /
-DgroupId=security /
-DartifactId=security /
-Dversion=0.0.1-SNAPSHOT /
-Dpackage=bookmarks /
-DinteractiveMode=false
La manera más fácil que he encontrado para hacer esto es usar el arquetipo pom-root
para crear el pom de nivel superior y luego usar archetype:generate
repetidamente archetype:generate
para crear cada módulo individualmente. Esto agregará automáticamente los módulos a la raíz pom (agregador) y establecerá la raíz pom como el pom padre para cada módulo (edit: aparentemente algunos arquetipos pueden tener un padre codificado, pero funciona para maven-archetype-quickstart
).
Aquí está el desglose:
Crea la raíz de nivel superior:
mvn archetype:generate / -DarchetypeGroupId=org.codehaus.mojo.archetypes / -DarchetypeArtifactId=pom-root / -DarchetypeVersion=RELEASE
cd
en su directorio raíz recién creado.Para cada módulo:
mvn archetype:generate / -DarchetypeGroupId=org.apache.maven.archetypes / -DarchetypeArtifactId=maven-archetype-quickstart / -DarchetypeVersion=RELEASE
Tenga en cuenta que -DarchetypeVersion=RELEASE
arriba utilizará automáticamente la última versión del arquetipo. Es posible que desee agregar -DgroupId=...
a cada uno de esos comandos para evitar que se repita.
La misma respuesta que Chris H. acabo de agregar groupId, artifactId y opciones de versión y deshabilité el modo interactivo.
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes /
-DarchetypeArtifactId=pom-root /
-DarchetypeVersion=RELEASE /
-DinteractiveMode=false /
-DgroupId=com.mycompany.app /
-DartifactId=my-app /
-Dversion=1.0.0-SNAPSHOT /
No estoy seguro si entiendo su pregunta correctamente, pero para crear un proyecto de varios módulos normalmente uso un simple pom (en el nivel raíz):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.vijaykiran</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
<module>m2</module>
</modules>
</project>
Este es probablemente el pom padre de múltiples módulos más simple que puede usar. El proyecto que desea crear puede tener ya un arquetipo que pueda ayudarlo a crear la estructura. Aunque puede obtener ayuda de un IDE para escribir el pom usted mismo, si hay un arquetipo disponible para el tipo de proyecto que desea construir, normalmente es más fácil usarlo.
Si está trabajando con el eclipse IDE, debe usar el plugin m2eclipse . Esta es una de las formas más sencillas de crear proyectos de varios módulos. Puede agregar un módulo a cada proyecto de maven creando un ''Maven Module-Project'' dentro de Eclipse. Al hacer esto, tiene la posibilidad de seleccionar un proyecto principal. El complemento hace todo, significa que copia el nuevo módulo al módulo principal y modifica el archivo pom.xml.
Simple 4 pasos si quieres evitar copiar xml pegar.
Cree un proyecto de arquetipo 284 (predeterminado). Abra el archivo pom creado cambie el embalaje de jar a pom
Elimine la carpeta src del proyecto: este es ahora el proyecto principal sin src, ya que el paquete es pom. En la carpeta anterior crea otro proyecto nuevo (284 predeterminado). Cambie el embalaje a war o ejb o ear. Esto se convierte en el submódulo.
Ejecute mvn eclipse: eclipse en cada módulo. Ahora el proyecto debe estar listo para importarse como un proyecto de Eclipse.
Al importar el proyecto, Eclipse se quejaría de lo siguiente. La configuración del proyecto no está actualizada con pom.xml. Ejecute Maven-> Update Project o use Quick Fix. Para evitar el error anterior, haga clic derecho y elija Corrección rápida. Esto actualizará los POMS. Otra forma de evitar este error es declarando los submódulos en Parent pom.
Consulte el enlace a continuación para obtener más detalles. http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_1
mvn archetype:create
ha quedado en desuso en favor de mvn archetype:generate
, por lo que solo cambió el nombre. Hay un arquetipo para proyectos de múltiples módulos en los repositorios oficiales, por lo que ejecutar este comando produce el resultado (minimalista):
[axe@gromp test]$ mvn archetype:generate
..
<num>: remote -> pom-root (Root project archetype for creating multi module projects)
..
Choose a number: 109: <num>
..
[axe@gromp test]$ tree
.
└── modules.test
└── pom.xml
1 directory, 1 file
[axe@gromp test]$ cat modules.test/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>modules.test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>modules.test</name>
</project>
Por lo tanto, básicamente tendrá que crear la estructura de la carpeta y los descriptores de los módulos (archivos pom.xml) usted mismo. Usar un simple script de shell o un archivo por lotes hará esto fácilmente, si lo requiere más de una vez.