2008-09-19 6 views
8

Tengo un proyecto paralelo I do = en Java. Es una aplicación web bastante sencilla. Se ejecuta en Tomcat en un servidor Linux y utiliza una base de datos MySQL. La mayoría del código fue escrito con Spring Framework. Tiene un montón de pruebas unitarias en su lugar. Cuando estoy codificando, está en Eclipse. Cuando despliego la aplicación, ejecuto algunos scripts de shell para mover un archivo WAR al servidor web, realizar actualizaciones de la base de datos y realizar cambios en las configuraciones de Apache. Soy el único desarrollador que trabaja en él, y en este momento solo se implementó en 1 entorno (producción), aunque es posible que algún día desee tener también un entorno de pruebas o etapas. Uso el control de versión SVN a través del complemento Eclipse.Pensando en aprender Maven

Siempre escucho de personas que usan Maven para sus proyectos. Dado que muchas personas lo están usando, me digo a mí mismo que debe ser bueno. Me gustaría aprenderlo en mi tiempo libre. Lo único es que no estoy del todo convencido de por qué querría usar Maven. ¿Mi primer párrafo parece un proyecto apropiado para Maven? ¿Tiene alguna ventaja específica para un proyecto que interactúa con una base de datos?

Respuesta

4

Su proyecto no parece un proyecto apropiado para Maven. Parece que tienes un entorno de desarrollo funcional. ¿Por qué configurar otro? Solo le dará un archivo de proyecto más para mantener, lo que rompe el principio bueno DRY.

+0

Estoy de acuerdo, aunque esta sería una buena oportunidad para aprender las diferencias entre el entorno existente y el desarrollado en maven. –

6

Estoy usando maven en la ira en el trabajo. Es una amante dura. Hace las cosas fáciles siempre y cuando estés haciendo cosas que muchas otras personas tienen y, esto es importante, siempre y cuando las estés haciendo de la manera que maven cree que deberías estar haciéndolo. Aléjate de ese camino angosto y luchará contra ti en cada paso del camino.

Me ha impresionado el BuildR por usarlo en el lateral. Es flexible como ANT mientras aprovecha el sistema de dependencia de maven. Además, está en incubación, por lo que es un poco difícil en los bordes.

+2

El principal objetivo de Maven es "Convención sobre configuración", lo que significa que están haciendo todo el trabajo por usted, si y solo si se somete a sus paradigmas de convenciones (comunes y generalmente fáciles de vivir). Aprobar proyectos antiguos en Maven a menudo está plagado de desastres por esta razón. –

+1

@Spencer K: las convenciones son una buena idea. El problema con maven es que es miope e inflexible. – sblundy

3

Hacemos exactamente lo que haces en nuestros proyectos, y usamos maven. Querrá usar maven para tener un diseño estandarizado y una forma de construir su proyecto. Nunca tiene que almacenar todas esas dependencias de jar en SVN o mantenerlas en un lugar especial, maven lo hace por usted. Maven también sirve como un medio para que otros desarrolladores entiendan su proyecto fácilmente. Una vez que empiece a usarlo, nunca querrá mirar hacia atrás :)

+0

¿Hace algo específico aunque para una aplicación web basada en DB? Por ejemplo, ¿hace algo para ejecutar un script de base de datos, o actualizar las reglas de reescritura de Apache o cualquier cosa? – bpapa

+0

Utilizamos maven junto con dbunit (http://www.dbunit.org/) para ejecutar scripts de base de datos (inicializar tablas, llenar db). Maven realmente no hace nada especial, es dbunit quien hace el trabajo. – neu242

11

Maven sería una buena opción para su proyecto IMO. Maven es una herramienta de gestión de despliegue y despliegue integral. Su mayor fortaleza es que hace que los scripts de compilación sean mucho más fáciles de mantener que los archivos Ant o los scripts de shell comparables funcionalmente.

El uso de maven es una de las ventajas más importantes, ya que es preferible a la configuración. Esto significa que si tiene su proyecto diseñado utilizando la estructura de directorios de Maven, no hay casi ninguna configuración necesaria para hacerlo construir y ejecutar sus pruebas de JUnit.

La otra gran victoria que Maven le ofrece es la gestión de la dependencia. Puede definir declarativamente las dependencias de su proyecto en el archivo de configuración de Maven llamado Project Object Model (POM) y Maven hace el trabajo de almacenar todos los archivos jar en una estructura de directorio local que mantiene. En el caso de artefactos disponibles al público, los frascos se descargan automáticamente del repositorio central de Maven y, en el caso de frascos de terceros internos o propios, puede instalarlos en su repositorio con un solo comando.

Además de simplemente organizar estos artefactos y configurar automáticamente su classpath de compilación para incluir todos los jar necesarios, maven también gestionará las jerarquías de dependencia. Eso significa que si su proyecto depende de jar A y A depende de jar B, jar B se incluirá automáticamente con su WAR aunque no lo liste explícitamente como una dependencia en su configuración de compilación.

También diré que desde el punto de vista del desarrollo profesional tiene sentido aprender Maven ya que en mi experiencia Maven ha superado a Ant como la herramienta de construcción de jure de elección tanto en proyectos de código abierto como de propiedad de Java.

Dicho todo esto, si usted tiene un sistema de compilación que es rápido y confiable para usted, entonces no vale la pena el esfuerzo de convertir a Maven solo por el bien de usar la misma herramienta que todos los demás.

8

Maven estaría bien para lo que quiere hacer. A diferencia de la mayoría de las herramientas de construcción, experto utiliza las convenciones sabiamente (bueno, mejor que muchos otros, por lo menos), y tiene "plugins" para cada área que usted ha mencionado:

Las pruebas unitarias: maven surefire plugin

Eclipse Integración: m2eclipse

archivo desplegar el war: WAR plugin y Deploy plugin

Maven también le puede ayudar en las pruebas de integración en Tomcat (si tiene alguna), ya que se puede iniciar, detener o desplegar una guerra con el cargo plugin.

De todos modos, si usted está planeando para leer en su tiempo libre, aquí hay un libro gratis (formato PDF): Maven the definitive guide

espero que ayude!

+1

El libro de sonatype es bastante bueno, y una lectura obligada si estás haciendo maven-izing serio. –

2

Aparte del hecho de que muchos proyectos oss están usando (o convirtiéndose a) maven y algunos proyectos de código cerrado se están mudando a maven, su proyecto NO necesariamente se beneficia mucho con el uso de Maven.

Sin embargo, si considera la posibilidad de abrirlo, los usuarios de su proyecto pueden beneficiarse de su proyecto empleando maven.

Algunos de los beneficios importantes de maven (dependencias de jar) se pueden obtener con ivy (http://ant.apache.org/ivy/).

Por otra parte, ya que parece indicar que usted es el único desarrollador. Si maven no funciona para usted, puede retroceder rápidamente.

BR,
~ Un

1

no lo hacen. Vea lo que otras personas son saying, e investigue cuidadosamente. También considere mirar algunos de mis otros comentarios sobre Maven aquí en SO.

0

Utilicé maven para la gestión de la dependencia hace un tiempo, porque estaba cansado de agregar todos los frascos, si quería probarlo en otra caja más o menos. Realmente no tienes que 'aprender' para esto, no toma mucho tiempo hasta que lo aprendas.

Sin embargo, lo más fácil sería preguntarle a alguien que ya conoce mvn, para que pueda mostrarle cómo funciona y luego lo aprende con bastante rapidez.

4

Una vez comencé un nuevo trabajo temporal que estaba usando Maven. Quemados 2 días tratando de descubrir cómo funcionaba su construcción de maven. Resultó que todos usaban maven 1.01 en Windows, y sin querer había intentado construir en 1.02, así que no funcionó para mí. Nadie en el lugar nuevo cómo funcionó, y lo habían estado usando durante meses y estaban felices con eso. Unos meses más tarde, en el mismo proyecto, tuve que profundizar en los scripts de gelatina para cambiar una sola variable de compilación. No fue divertido.

Cuando comencé a usarlo, leí "convención sobre configuración" y "utiliza un conjunto estándar de directorios". Estos no estaban en ningún lugar que pudiera encontrar en los documentos. Supongo que se supone que debes adivinar.

Mis opiniones:

  • cualquier herramienta que utilice que no entiende por completo es un error, y un barco potencial de anclaje a su proceso de desarrollo. Si la herramienta es muy, muy complicada, es probable que use las partes más simples en lugar de dominarla profundamente. Si no está utilizando o evitando las partes más poderosas de la herramienta, es probable que esté derrotando el propósito de usarla.
  • Maven es un ejemplo clásico de algo tan lleno de bondades automáticas que no tienes ni idea de lo que está haciendo a menos que dediques mucho más tiempo del que una herramienta de construcción merece para convertirse en un maven maven. Una solución sobre ingeniería en busca de un problema.
  • No encontré ninguna instancia de cosas que tuviera que hacer que no pudiera hacer con la hormiga y el maven necesario. Sé que hay algunos, simplemente nunca los necesité. Si lo hiciera, probablemente sería más caritativo con respecto al esfuerzo requerido para tratar con maven.
  • Hace que su compilación dependa de internet. No es raro ahora descargar un pequeño proyecto, ejecutar mvn, y tener maven descargar 10 plugins antes de que incluso comience a construir lo que está tratando de construir en primer lugar. ¿Que esta haciendo? No hay forma de saber realmente, pero será mejor que no se rompa. Cuando falla, la complejidad de la falla y las capas de dependencias acumuladas hacen que sea prácticamente imposible depurar. No veo por qué esto es de alguna manera una mejora en las herramientas de compilación más simples o incluso deseable por cualquier motivo.

En resumen, es casi mágico, excepto que cuando no funciona es probable que no tenga idea de por qué. Esto parece una mala compensación. Esto fue, para ser justo, hace unos años. Sé que estoy siendo poco amable, y se ha mejorado en las versiones posteriores (que también he usado). Sin embargo, lo odiaba (¿puedes decirlo?)

0

Una de las mayores fortalezas de Maven es que hace una gran parte de la administración de compilación/dependencia sin que escribas ningún script de compilación o incluso que describas tu proceso de compilación. Ya tienes la configuración de tu proyecto para que Maven no se beneficie al configurar el shell del proyecto o al descargar las dependencias que especifiques sin tener que descargarlas individualmente. Si su objetivo es aprender cómo usar y administrar Maven, hacerlo para un proyecto como este donde no hay otros desarrolladores y el proceso de construcción es muy simple (por lo que puedo decir) tampoco ayudará mucho. Así que recomendaría no usar Maven para el proyecto existente.

Sin embargo, configuro una aplicación de prueba similar a la suya usando Maven y la comparo con la estructura de su proyecto para ver si sigue las mejores prácticas (al menos como los ven los desarrolladores Maven) y si su aplicación sigue convenciones de aplicaciones web estándar .

Cuestiones relacionadas