No te molestes con los arquetipos hasta más tarde
Para toda la información que necesita saber sobre Maven, lea algunos de los libros en su sitio web . Sin embargo, eso es un poco exagerado para lo que estás tratando de lograr.
Para comenzar, diseñe su aplicación web siguiendo la estructura estándar de Maven para aplicaciones web de la siguiente manera. (No necesita un arquetipo de Maven para esto, es solo un montón de carpetas estándar, puede hacerlo en 2 minutos).
src/main/java
- contiene tu código Java de producción
src/main/resources
- contiene sus recursos de classpath de producción (por ejemplo, contextos Spring)
src/main/webapp
- (contiene WEB-INF / web.xml pero no la carpeta lib)
src/test/java
- contiene tu código Java de prueba
src/test/resources
- contiene sus recursos de prueba (por ejemplo, feeds XML de ejemplo para pruebas de servicios web, etc.)
Complementos básicos
El siguiente paso es elegir un montón de complementos. Los sospechosos habituales son, obviamente, los que admiten limpieza, compilación y recursos (vienen como parte de Maven pero puedes configurarlos). Entonces tendrás el probador de unidades infalible y el complemento WAR. Eso es suficiente para crear una aplicación web muy básica.
Complementos más avanzados
El siguiente paso es introducir Findbugs y complementos PMD que le darán una revisión exhaustiva de su código e informarán sobre varios problemas potenciales. Probablemente desee tener JXR para el código fuente de referencia cruzada, la lista de tareas para el seguimiento de TODOs y las etiquetas REFACTOR, etc. Sobre todo...
... Use el complemento Jetty para aplicaciones web
Use el complemento Jetty para ejecutar su archivo WAR dentro de su IDE para una depuración fácil. Es rápido y pequeño y hace el trabajo realmente rápido. Tener Jetty como parte de su compilación Maven hace que su proyecto pueda probarse en cualquier máquina sin necesidad de un IDE con algunos paneles de servidores complejos configurados. También le permite declarar dependencias de otros archivos WAR, lo que a su vez significa que puede generar un entorno de trabajo completo que consta de múltiples aplicaciones web, todo con un solo comando "mvn clean jetty: run". Esto funciona en cualquier lugar, e incluso puede proporcionar una configuración JNDI de prueba para que todas las fuentes de datos inyectadas por Spring estén configuradas externamente. Si combina este enfoque Jetty con una página HTML de demostración estándar (src/test/resources/demo.html
) ahorrará muchísimas horas de desarrollador intentando obtener un entorno local que funcione. Un comando y listo. Sencillo.
Configurando su IDE
Con Maven es fácil, ya que todos los grandes lo soportan: Eclipse, Netbeans y, por supuesto, mi Intellij favorito. Simplemente apunte su IDE al pom.xml y se encargará de eliminar todas las dependencias enumeradas por usted. No más tonterías con WEB-INF/lib
. En Eclipse, normalmente usa Archivo | Importar ... | Proyecto Maven | pom.xml.
Integrando con Hudson
Primero instale Hudson (es solo una aplicación web) y luego apunte a su sistema de control de versiones para que compruebe la versión adecuada. Su último paso es configurarlo para que use Maven para hacer la compilación. Obviamente, Maven tendrá que instalarse en su máquina de compilación (suponiendo que sea diferente de su máquina de desarrollo).
Hudson solo crea las instantáneas
Haga que Hudson realice compilaciones de instantáneas y deje las compilaciones de lanzamiento a un proceso manual. El uso de ese enfoque significará que los desarrolladores pueden compartir su código bajo una revisión de instantánea (por ejemplo, 1.0.0-SNAPSHOT) y solo si puede pasar la compilación se compartirá en el repositorio del equipo. Por lo general, Hudson ejecutará "mvn clean deploy", aunque incluir el objetivo de "sitio" también puede ser parte de su proceso, ya que creará un pequeño sitio web de proyecto para cada compilación. Los desarrolladores del equipo tendrán la compilación de instantáneas actualizada incluida automáticamente en su proyecto a través del proceso de gestión de dependencias de Maven.
Hudson ofrece una gran cantidad de complementos que pueden admitir todo tipo de métricas. Mi favorito personal es hacer un seguimiento del número de pruebas aprobadas por proyecto a lo largo del tiempo. Es genial mostrarle a la gerencia que su recuento de pruebas unitarias y la cobertura siempre están aumentando.
Guía de configuración general
Divida sus repositorios en al menos la siguiente estructura:
- Team-Release: todos sus artefactos de producción lanzados van aquí
- instantánea del equipo: todos sus artefactos de desarrollo de instantáneas van aquí
- lanzamiento de terceros: todas sus bibliotecas de terceros compatibles van aquí (por ejemplo, Spring, Hibernate, etc.)
Las cuentas de usuario de desarrollador no deberían poder escribir en los repositorios del equipo, ya sea una instantánea o una versión. Esto permitiría a un desarrollador evitar a Hudson si tiene prisa y rápidamente se convertirá en la norma.
Asegúrese de descargar siempre las firmas fuente, javadocs y SHA para todos sus terceros. Jarvana es un excelente explorador de repositorios para todas esas clases difíciles de encontrar.
Considere instalar un administrador de repositorio como Nexus o Artifactory para permitir un mejor control sobre su repositorio cada vez mayor.
Maven proporciona muchos arquetipos
imprimirá una lista de disponibles.
La principal diferencia entre los arquetipos simples de Java con los arquetipos J2EE es que se generarán directorios para jsp e imágenes. Si comienza un nuevo proyecto J2EE, considere usar uno de ellos desde el principio.
A medida que su proyecto crezca, puede agregar más dependencias. Personalmente, prefiero comenzar con una colección mínima de dependencias (por ejemplo, el arquetipo básico J2EE) y luego agregar gradualmente lo que necesito.
fuente
Lo hice comenzando con un arquetipo básico y agregando todos los bits, y estoy bastante seguro de que esa no es una muy buena manera. Pero también me resulta incómodo al revés; seleccionar lo que es un buen arquetipo es difícil a menos que ya estés "profundamente versado en los secretos". Eso es demasiado parecido a la tradición mágica (a diferencia de la información técnica sensible y reconocible) para mi gusto ...
fuente
Maven proporciona una forma de crear proyectos a partir de plantillas llamadas Arquetipos . Utiliza el comando
mvn archetype:generate
para elegir uno de forma interactiva . También puede especificar uno directamente.Todo en una línea.
fuente
He estado usando Maven y Hudson los últimos tres meses. Me ayuda a verificar el estado de la base del código regularmente ejecutando todas las pruebas unitarias, generando un informe de prueba. Puedes probar esto.
También puedes probar Spring Roo. Es una herramienta RAD para crear proyectos J2EE basados en Spring.
fuente