2010-06-18 19 views
19

Estoy tratando de averiguar el uso de Maven y obtuve muchos artículos que describen sus características y usos. Pero simplemente no puedo entender el uso real de Maven desde el punto de vista de la productividad.¿Cómo usar Maven en mi proyecto Java y por qué?

De lo que estoy acostumbrado en nuestros proyectos escolares fue simplemente crear un nuevo proyecto Java en Eclipse, escribir su código, crear un .war (si está basado en la web) y pegar el código en la carpeta webapps de Tomcat y comenzar ¡el servidor!

Así,

  1. dónde viene Maven en la imagen? He usado Ant y entiendo que las hormigas se benefician de un proceso de compilación estandarizado. Pero, ¿por qué necesitamos una hormiga avanzada en forma de Maven?

  2. En cualquier caso, necesito usarlo, entonces, ¿dónde empiezo - flujo básico, algunos buenos tutoriales?

Gracias

+5

Ant no es un proceso de compilación muy estandarizado. Es más un proceso de creación de "haz lo que quieras con la estructura que quieras". – ColinD

Respuesta

14

Maven se utiliza para gestionar los procesos de construcción, pruebas y despliegue. Puede separar las pruebas unitarias y las pruebas de integración para que solo las ejecute cuando sea necesario y reduzca el tiempo de compilación.

También es un gestor de dependencia, lo que significa que cuando se da cuenta de la pieza del servidor de su proyecto necesita apache commons-logging 1.0.4 pero los conflictos de cliente con cualquier cosa más allá 0.7.9, puede simplemente añadir un par de líneas a las respectivas pom.xml archivos, y Maven maneja todo eso (descarga, instalación y seguimiento de las diferentes versiones de esas dependencias).

No era creyente antes de mi tarea actual, pero después de 2 años utilizándola para grandes aplicaciones empresariales, definitivamente respeto lo que Maven pone sobre la mesa. Hay muchos recursos en línea, pero si usted va a ser el líder en esto y realmente se siente incómodo, le recomiendo obtener un libro: the O'Reilly one es útil.


olvidó mencionar que hay un plugin para Eclipse que hace que sea prácticamente indoloro para usar con Eclipse: m2Eclipse.


Segunda actualización por ejemplo pom.xml segmento para responder a la pregunta OP:

Su pom.xml contendrá código XML tales como:

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.0.4</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

Estos son descargados desde el repositorio central de Maven (Google "experto nexus ") o puede configurar sus propios repositorios adicionales (como para sus propios proyectos, o si no está conectado a Internet).

+0

Entonces, ¿maven descargará e instalará los archivos jar requeridos nombrados en la dependencia? ¿Cómo? – zengr

+0

+1 para m2eclipse – stacker

+0

@zengr, los descarga a un "repositorio" local (memoria caché) e incluye archivos JAR del repositorio en el classpath cuando se ejecutan pruebas, compilación, etc. Cuando se empaqueta un .war por ejemplo, los JAR luego se empacan en .war. –

3

Free books about Maven pueden descargarse desde Sonatype (de donde provienen los desarrolladores originales de Maven).

Consulte también la documentación en el sitio web Apache Maven.

+0

El enlace parece estar roto. El nuevo enlace probablemente se parece a [this] (http://www.sonatype.com/resources/books). – Pshemo

1

¿De dónde viene Maven?I he usado Ant y entiendo Hormigas beneficio de un proceso de compilación estandarizado. Pero, ¿por qué necesitamos un Ant avanzado en forma de Maven?

  • Maven introdujo "convención sobre configuración" esto ayuda si algunos colegas escriben grandes hormigas que scipts código. además de la administración de dependencias, el único problema es convertir proyectos monolíticos con muchos artefactos.

En cualquier caso, hay que usarla, por lo donde puedo empezar - flujo básico, algunos buenos tutoriales?

útil.

5

Tenía exactamente la misma percepción que usted y durante años evité Maven.

Lo que pasa es que le permite obtener fácilmente las jarras necesarias que su aplicación pueda necesitar (llamadas dependencias - frascos y otras cosas). Entonces, la próxima vez que alguien más ejecute su proyecto, obtendrá los frascos automáticamente.

Sé que es un poco difícil de entender, hasta que trabaje con proyectos existentes que lo usan.

Por ejemplo, descargué recientemente un proyecto de código abierto, que dependía de 10 o 12 diferentes en diferentes versiones de jar. Después de descargar el código fuente y ejecutar Maven, todos esos frascos (y muchos más) fueron descargados por mí.

El problema con Maven (como me dijo un amigo mío) es que para realizar un programa de "Hola mundo", primero descarga el mundo para saludarlo. : P

+0

gracias por compartir exp :) – zengr

+0

:) De nada. Por cierto, traté de entrar en toda esa documentación, tutorial y todo, pero nada tiene más sentido que simplemente ejecutarlo, después de eso todo comienza a tener sentido. – OscarRyz

0

El último netbeans también tiene una muy buena integración maven.

0

Si se encuentra dentro de una organización, intente construir un proxy repositorio maven. Artifactory es una buena opción.

4

para todos aquellos que se preguntan dónde el maven descarga las jarras de dependencia, consulte una carpeta llamada .m2 en el directorio raíz del usuario. p.ej. para mí es el c: \ documentsand settings \ myUserName.m2 \

También he investigado un poco en maven y he hecho algunos pequeños garabatos como recordatorios. Si vale la pena una lectura entonces aquí es ::

/* MVN MVN generan instalación descarga todos los frascos necesarios mvn test pone a prueba la aplicación hecha ... sitio mvn construye el sitio de descarga de dependencias

Para implementar el sitio, necesitamos declarar una ubicación para distribuir en su pom.xml, similar al repositorio para la implementación. ... página web SCP: //www.mycompany.com/www/docs/project/ ...

mvn sitio de implementar despliega el sitio

cómo construir la estructura del sitio: el archivo site.xml se utiliza para describir la disposición del sitio, y reemplaza el archivo navigation.xml utilizado en Maven

Una muestra es el siguiente:

Maven http://maven.apache.org/images/apache-maven-project.png http://maven.apache.org/ http://maven.apache.org/ imágenes/maven-small.gif

<menu name="Maven 2.0"> 
    <item name="Introduction" href="index.html"/> 
    <item name="Download" href="download.html"/> 
    <item name="Release Notes" href="release-notes.html" /> 
    <item name="General Information" href="about.html"/> 
    <item name="For Maven 1.x Users" href="maven1.html"/> 
    <item name="Road Map" href="roadmap.html" /> 
</menu> 

<menu ref="reports"/> 

... 

así que en efecto, tenemos que vincular nuestro html a este formato de estructura para hacer que el diseño del sitio web también nos permita agregar cualquier CSS nuevo o cosas por el estilo, todo lo que tenemos que hacer es ponerlos en la parte de recursos del carpeta src

entonces podemos crear un archivo de la guerra de nuestro proyecto y ponerlo en la carpeta httpd de carpetas similar Apache o tal ofour servidor web

en caso que necesitamos para generar proyectos, tenemos que añadir algunas líneas de código a nuestro archivo pom.xml y es: ... org.apache .maven.plugins maven-project-info-informes-plugin 2.0.1 ...

también, descriptores sitio son de engaste para site.xml

los detalles se pueden visto en la documentación del experto

estructura experto con su importancia:

proyecto/ pom.xml - Define el proyecto src/ main/ java/- Contiene todo el código java que irá en su artefacto final.
Ver maven-compiler-plugin para más detalles scala/- Contiene todo el código scala que se incluirá en su artefacto final. //// no es necesario para nuestro proyecto actual hasta el momento Ver maven-scala-plugin para más detalles resources/- Contiene todos los archivos estáticos que deberían estar disponibles en classpath en el artefacto final. Consulte maven-resources-plugin para obtener más información webapp/- Contiene todo el contenido para una aplicación web (jsps, css, images, etc.)
Consulte maven-war-plugin para obtener más información sitio/- Contiene todos los archivos apt o xdoc utilizados para crear un sitio web de proyecto.
Consulte maven-site-plugin para obtener más información
test/ java/- Contiene todos los códigos java utilizados para las pruebas.
Ver maven-compiler-plugin para más detalles scala/- Contiene todo el código scala utilizado para las pruebas.
Consulte maven-scala-plugin para obtener más información resources/- Contiene todo el contenido estático que debería estar disponible en el classpath durante la prueba. Ver maven-recursos-plugin para más detalles

mvn validar este validará que todas las dependencias están satisfechos y no faltará nada mvn compile esto va a compilar el proyecto mvn verificar comprueba si el paquete es válido o no también en el proyecto, las dependencias se van a insertar en el archivo XML

se da el ejemplo de la inyección de dependencias a continuación :: org.scala-lang scala-biblioteca 2.7.2-RC2 junit junit 3.8.1 prueba

cada dependencia se compone de varios elementos:

* groupId - The group of the dependency to rely on 
* artifactId - The artifact in the group to rely on 
* version - The version of the dependency to rely on 
* scope - The "scope" of the dependency. Defaults to compile (more details later) 
* packaging - The packaging for the dependency. Defaults to jar (e.g. jar, war, ear) 

Puede integrar sus páginas estáticas siguiendo estos pasos:

* Put your static pages in the resources directory, ${basedir}/src/site/resources 
* Create your site.xml and put it in ${basedir}/src/site 
* Link to the static pages by modifying the menu section, create items and map them to the filenames of the static pages 

mvn tomcat: depl oy para implementar en tomcat o apache, puede obtener este comando

Cuestiones relacionadas