Convertir proyecto existente de Eclipse a proyecto Maven

246

Para un proyecto en el trabajo, estamos considerando usar el complemento Maven para Eclipse para automatizar nuestras compilaciones. En este momento, el procedimiento es mucho más complicado de lo que debería ser, y esperamos que Maven simplifique las cosas a una construcción de un solo clic.

Mi pregunta es, ¿hay un asistente o un importador automático para convertir un proyecto Eclipse Java existente en un proyecto Maven, utilizando el complemento Maven? ¿O debería crear un nuevo proyecto de Maven y copiar manualmente todos los archivos de origen, libs, etc.

Tom G
fuente
3
¿Su compilación existente utiliza un script Ant?
Matt b
44
Probablemente debería cambiar la respuesta aceptada
Mr_and_Mrs_D

Respuestas:

141

Si solo desea crear un POM predeterminado y habilitar las funciones de m2eclipse: así que supongo que actualmente no tiene una configuración de compilación automática alternativa que está intentando importar, y supongo que está hablando del complemento m2eclipse.

El complemento m2eclipse proporciona una opción de clic derecho en un proyecto para agregar este pom.xml predeterminado:

Nuevas versiones M2E

Haga clic derecho en Proyecto -> submenú Configurar -> Convertir a proyecto Maven

Versiones anteriores de M2E

Haga clic derecho en Proyecto -> submenú Maven -> Habilitar administración de dependencias.

Eso hará lo necesario para habilitar el complemento para ese proyecto.


Para responder ' ¿hay un importador o asistente automático? ': No que yo sepa. El uso de la opción anterior le permitirá habilitar el complemento m2eclipse para su proyecto existente evitando la copia manual. Aún necesitará configurar las dependencias y otras cosas que necesita para construir usted mismo.

brabster
fuente
Aunque habilita M2Eclipse, no es realmente un asistente, no importa un proyecto Eclipse existente. Más bien, le da al usuario la opción de seleccionar dependencias, etc., lo que puede ser difícil si el usuario no tiene mucha experiencia con Maven.
Kaleb Pederson
Interpreté la pregunta como '¿necesito crear un nuevo proyecto y copiar manualmente cosas para usar el complemento m2eclipse?', Aclararé.
brabster
16
El elemento del menú maven no está disponible para mí desde el menú del botón derecho (último m2eclipse), la respuesta de chengdong funciona.
wulfgarpro
8
En la versión actual de Eclipse (4.2) y m2eclipse, el elemento del menú es Convertir / Convertir a Maven Project.
Jesper
12
El elemento de menú de @Jesper es "Configurar / Convertir a Proyecto Maven"
angelcervera
293

Comience desde m2e 0.13.0 (si no es anterior a), puede convertir un proyecto Java en proyecto Maven desde el menú contextual. Aquí es cómo:

  • Haga clic derecho en el proyecto Java para abrir el menú contextual
  • Seleccione Configurar> Convertir en proyecto Maven

Aquí están los pasos detallados con capturas de pantalla.

chengdong
fuente
30
Esto todavía no crea las estructuras de directorio y no agrega dependencias en pom.
Klaus Nji
2
¿m2e todavía no crea la estructura de directorios de maven y agrega dependencias en pom?
Mr_and_Mrs_D
2
Mi solución (@ShriKant Vashishtha) mencionada a continuación resuelve todos los problemas descritos aquí. Crea la estructura de Maven, elimina espacios en los nombres de carpeta, crea pom.xml y mueve las carpetas de origen en la estructura de Maven
ShriKant Vashishtha
Funciona perfecto e impecable en Windows 10 Eclipse Mars en ese momento.
Matthis Kohli
Funciona perfecto para mí
WitnessTruth
12

Estaba teniendo el mismo problema y quería Mavenise todo el espacio de trabajo de eclipse que contiene alrededor de 60 proyectos de Eclipse. Hacerlo manualmente requería mucho tiempo y las opciones alternativas no eran tan viables. Para resolver el problema, finalmente creé un proyecto llamado eclipse-to-maven en github. Como eclipse no tiene toda la información necesaria sobre las dependencias, hace lo siguiente:

  • Basado en <classpathentry/>elementos XML en el archivo .classpath, crea las dependencias de otro proyecto, identifica el archivo jar de la biblioteca y en función de su nombre (por ejemplo, jakarta-oro-2.0.8.jar) identifica su versión. Actualmente artifactIdy groupIdson los mismos, no pude encontrar algo que pudiera devolverme el ID de grupo Maven de la dependencia basada en artifactId. Aunque esta no es una solución perfecta, proporciona un buen terreno para acelerar la mavenización.

  • Mueve todas las carpetas de origen según la convención de Maven (como src/main/java)

  • Como los proyectos de Eclipse que tienen nombres con espacios son difíciles de manejar en el entorno Linux / Unix, también los renombra con nombres sin espacios.

  • Los archivos pom.xml resultantes contienen las dependencias y la estructura básica de pom. Debe agregar los complementos Maven necesarios manualmente.

ShriKant Vashishtha
fuente
Interesante! ¿Es portado a Luna? ¿El proyecto seguirá siendo un proyecto de eclipse (válido .classpathy .projectarchivos)? ¿Podría agregar a su respuesta cómo usar su complemento para mavenizar un proyecto JavaSE simple y cuáles serían los cambios reales en la estructura del directorio?
Mr_and_Mrs_D
Lo siento, pero no sé qué es Luna. Ya no será un proyecto de eclipse válido a medida que cambie la estructura del directorio del proyecto. Sin embargo, crear configuraciones de eclipse modificadas utilizando Maven es fácil. Esto no es un complemento sino una herramienta. La forma de ejecutarlo ya se menciona en README del proyecto. La estructura del directorio se convierte en la convención de Maven. Entonces, todas las fuentes van a src / main / java, por ejemplo.
ShriKant Vashishtha
¡Luna es la última versión de eclipse!
Mr_and_Mrs_D
7

Haga clic derecho en el nombre del proyecto> Configurar> Convertir en proyecto Maven> haga clic en finalizar. Aquí agregará algunas dependencias para descargar y agregar su archivo jar esperado.

Esto creará un archivo pom.xml generado automáticamente. Abra ese archivo en formato xml en su editor de eclipse. Después de construir la etiqueta ( </build>), agregue sus dependencias que puede copiar del sitio web de Maven y agréguelas allí. Ahora estás listo para irte. Estas dependencias agregarán automáticamente los archivos jar necesarios.

Omar Faroque Anik
fuente
1
¿Esto creará la estructura de carpetas maven?
Mr_and_Mrs_D
Sí, creará la estructura de carpetas de Maven basada en la plantilla de arquetipo mapeada apropiada y la configuración mínima. Debe agregar cada una de las dependencias de su proyecto (desde .classpath) en POM.xml usted mismo manualmente, uno a la vez.
Pratap Singh
5

La respuesta de Chengdong es correcta, deberías usarla Configure>Convert to Maven Project. Sin embargo, debo agregar que el proceso de conversión se ha mejorado mucho ya que m2e 0.13.0: m2e 1.1+ y m2e-wtp 0.16.0+ ahora pueden convertir la configuración de eclipse existente en la configuración del complemento maven .

En cuanto a la conversión de dependencias, puede probar la función de integración Maven de JBoss Tools (JBT) 4.0, que contiene un asistente de conversión experimental, conectado al proceso de conversión de m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

No pretende ser la solución definitiva (nada puede), ya que debería ser de gran ayuda para iniciar el proceso de conversión de Maven.

Además, para su información, aquí hay algunas ideas para mejorar el proceso de conversión de m2e , la refactorización para usar un diseño Maven probablemente se implementará en el futuro.

JBT 4.0 (requiere Eclipse JavaEE Juno) se puede instalar desde http://download.jboss.org/jbosstools/updates/stable/juno/ o desde Eclipse Marketplace

Fred Bricon
fuente
4

Es necesario porque, más o menos, cuando importamos un proyecto desde git, no es un proyecto maven, por lo que las dependencias maven no están en la ruta de compilación.

Esto es lo que he hecho para convertir un proyecto general en un proyecto maven.

proyecto general -> proyecto java haga clic derecho en el proyecto, propiedades-> facetas del proyecto, haga clic en "java". Este paso convertirá un proyecto general en proyecto java.

proyecto java -> proyecto maven haga clic con el botón derecho en el proyecto, configurar -> convertir a proyecto maven En este momento, las dependencias de maven lib todavía no están en la ruta de compilación. propiedades del proyecto, ruta de compilación, agregar biblioteca, agregar dependencias de maven lib

¡Y espere unos segundos, cuando se cargan las dependencias, el proyecto está listo!

Moonshang
fuente
2

Hay un programa de línea de comandos para convertir cualquier proyecto Java en un proyecto SBT / Maven.

Resuelve todos los frascos e intenta averiguar la versión correcta basada en la suma de comprobación SHA, classpath o nombre de archivo. Luego intenta compilar las fuentes hasta que encuentra una configuración de trabajo. También se pueden asignar tareas personalizadas para ejecutar por configuración de dependencia.

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver

Alex
fuente
Esto parece una opción muy atractiva. Pero, como está empaquetado actualmente, no es muy accesible. No es evidente cómo empaquetar e implementar el código fuente. La mayoría de los desarrolladores de Java no son desarrolladores de Scala, ni SBT es una herramienta ampliamente utilizada dentro de la comunidad.
A. Rick
1

Mi pregunta es, ¿hay un asistente o un importador automático para convertir un proyecto Eclipse Java existente en un proyecto Maven, utilizando el complemento Maven?

Hasta donde sé, no hay nada que convierta automáticamente un proyecto Eclipse en un proyecto Maven (es decir, modifique el diseño, cree un POM, "genere" y lo alimente con metadatos, detecte bibliotecas y sus versiones para agregarlos al POM , etc.) Eclipse simplemente no tiene suficientes metadatos para hacer esto posible (este es precisamente el objetivo del POM) y / o para producir un resultado decente.

¿O debería crear un nuevo proyecto Maven y copiar manualmente sobre todos los archivos fuente, libs, etc.

Esa sería la mejor opción en mi opinión. Cree un proyecto Maven, copie / mueva fuentes, recursos, pruebas, pruebe recursos en sus respectivos directorios, declare dependencias, etc.

Pascal Thivent
fuente
¿Por qué esta respuesta es más alta que la respuesta +199? Casi no lo veo
Evorlor
1

Para convertir a Gradle es análogo a Maven:

Haga clic derecho en Proyecto -> submenú Configurar -> Convertir a Proyecto Gradle (STS)

otro
fuente
44
La respuesta no es relevante para la pregunta
Ripon Al Wasim
1
Encontré esta pregunta al buscar Gradle, muchas veces es útil agregar respuestas para otro sistema operativo en lugar del sistema operativo solicitado porque no existe una pregunta para un caso individual. Con respecto a Gradle, no crearía una nueva pregunta para responder lo que considero útil, sino que publico esto. Gracias y Saludos.
otro