2009-03-26 13 views
13

Nuestro software está escrito en Java y comprende muchos (7) proyectos.Migrando de hormiga a maven en Netbeans

Estos proyectos son proyectos de Netbeans. Estoy considerando convertirlos a maven2.

¿Dónde puedo encontrar algunos consejos para hacer tal cosa?

Respuesta

0

Descubrí que la migración no es necesaria. Los requisitos reales que necesito es la descarga automática de dependencias (bibliotecas).

Esto también se logra por Ivy que, no obstante, utiliza repositorios maven.

Resolví el proyecto de conversión de hormiga a hormiga + hiedra con IvyBeans.

+0

IvyBeans parece que ya no se mantiene. ¿Funciona esto con la última versión de netbeans? – Radan

0

Esto no será una tarea fácil ya que Maven2 espera que los archivos se organicen de una manera específica. De todos modos, Better Builds with Maven es un libro gratuito que debería comenzar. Te ayudará a entender a Maven y también tiene un capítulo sobre migración.

14

No lea ese libro. Solo te confundirá. Lea este libro en su lugar: "Maven - La guía definitiva" http://www.sonatype.com/books/maven-book/reference/.

Además, el sitio de maven tiene mucha información, pero la estructura es terrible, por lo que deberá usar Google para navegar en ella.

Aquí está mi sugerencia:

  1. hacer esto a mano, no con "automagic" "ayuda" de la IDE. La integración de Maven no funciona tan bien todavía, no en ningún IDE.

  2. Asegúrate de que el proyecto del programa esté dividido en módulos bajo un módulo paraguas común, para que cada módulo produzca un artefacto binario (jar, war, ...) posiblemente acompañado del javadoc del código fuente detrás de ese artefacto , un zip con el código fuente, etc. El principio básico es que cada módulo produce un solo artefacto, que contiene todo el código que no es de prueba bajo ese módulo. Puedes hacer esto mientras el proyecto todavía está construido por hormiga.

  3. Cada módulo debe ajustarse al diseño de directorio maven estándar. El destino de compilación está bajo [module]/target/[output-type, p. "clases"]. El código fuente está bajo [module]/src/main/[src-type, p. "java"] y [module]/test/[src-type]. El artefacto consiste en todo el código bajo src/main, y ninguno de los códigos bajo src/test, ya que está construido en los directorios de destino. Puedes hacer esto mientras todavía está construido por hormiga.

  4. Comience transformando el submódulo que no tiene dependencias en otros módulos del proyecto.

  5. Ahora puede crear el módulo padre maven pom.xml con el tipo de artefacto "pom", que consta de uno de los siguientes módulos. Cree un módulo hijo para el primer submódulo (el que tiene solo dependencias externas), utilizando el módulo paraguas como "principal". Recuerde que necesita especificar la versión para el padre. Recuerde agregar el módulo hijo como un "módulo" en el padre también. Siempre use $ {project.version} como versión en los módulos secundarios cuando cree proyectos de varios módulos como este. Todos los módulos de un elemento primario deben publicarse simultáneamente en una sola operación, y si utiliza esta opción, maven se asegurará de que los campos de versión permanezcan iguales en todos los módulos y se actualicen en todas partes durante el lanzamiento. Esto puede dificultar la reutilización del esquema de numeración existente, pero eso no importa. Nunca se va a quedar sin números de versión de todos modos.

  6. Agregue las dependencias necesarias, y asegúrese de que puede compilar el módulo principal y el módulo secundario utilizando el comando "mvn clean install" del módulo primario.

  7. Proceda con el resto de los módulos de la misma manera. Las dependencias de otros módulos en el mismo proyecto principal también deben usar $ {proyecto.versión} como la "versión" de la que dependen, lo que significa "la misma versión que esta". TEN EN CUENTA QUE para construir, el módulo del que dependes debe construirse usando "mvn install", para que se implemente en tu repositorio local (computadora). De lo contrario, el módulo dependiente no podrá encontrar las clases. NO hay dependencias de código fuente entre los módulos en maven, solo dependencias a versiones compiladas y empaquetadas instaladas en repositorios locales y remotos. Esto puede ser muy confuso si vienes de ant-projects. Cree desde el módulo raíz hasta que se sienta cómodo con esto. Tarda dos días.

  8. No utilice la integración de maven en IDEs. Es una mala idea Use "mvn idea: idea" o "mvn eclipse: eclipse" para configurar su espacio de trabajo como un proyecto IDE común no convencional. Los mecanismos de dependencias entre módulos en maven y el IDE no son idénticos y nunca lo serán. Además, si tiene varios proyectos mavenizados con dependencias intermedias, quiere tener varios de estos en su espacio de trabajo con dependencias configuradas entre. Puedes hacer esto con mvn idea: idea/eclipse: eclipse si creas un archivo de proyecto maven llamado "workspace.xml" (o lo que sea) en el mismo directorio que el módulo principal, configurado como un proyecto de varios módulos que contiene módulos " " y "../otherproject" (solo referencia unidireccional aquí, no ref. padre). Si ejecuta "mvn idea: idea/eclipse: eclipse -f workspace.xml" obtendrá un espacio de trabajo con todos estos módulos vinculados entre sí. Ninguna integración IDE te permite hacer eso. Esto suena como mucho trabajo extra, pero workspace.xml-file es realmente pequeño. No tiene que contener todas esas cosas de dependencia y todo eso, solo la referencia a los módulos que desea vincular en su IDE.

+0

No hay SVN: netbeans NetBeans. Pero el plugin Maben de NetBeans comprende el POM y maneja muy bien la administración de dependencias: http: //wiki.netbeans.org/MavenBestPractices – mjn

+0

En el punto 2, puede ser útil mantener las partes del script ant que construye el despliegue y reemplazarlo al final. En el punto 8, encuentro que tanto el eclipse como la idea hacen un mejor trabajo importando poms maven que maven en la creación de proyectos. YMMV – sal

+0

El punto n. ° 7 no parece ser correcto. En un proyecto de varios módulos, maven no permite configurar dependencias en otros módulos sin instalarlos en repositorios locales/remotos. – Vicky

0

He creado una secuencia de comandos para migrar las compilaciones de Ant a Maven. Puede encontrar más información aquí:

https://github.com/ewhauser/ant2maven

No te va a ayudar con la fijación de la estructura de directorios o cualquier tareas Ant adicionales, sino que elimina muchos de los tediosos pasos para empezar.

+0

Se corrigió el enlace al script. –

0

lo hice una migración succeful del proyecto de NetBeans Ant para proyectos Maven usando los instruccions por Joseph Mocker aquí: http://forums.netbeans.org/ptopic55953.html Cito la parte importante:

  1. cerrar el proyecto
  2. cambie el nombre build.xml, nproyecto archivos/carpetas a algo para que NB no los reconozca.
  3. cerrar y reiniciar NB (por lo que el conocimiento de la memoria caché del proyecto se ha ido)
  4. copiar en un pom vacío de algún otro proyecto.
  5. abra el proyecto de copia de seguridad en NB (NB ahora debe identificarlo como un proyecto Maven)
  6. reorganizar los archivos de seguir el camino experto (™)