M2E y tener maven generó carpetas de origen como carpetas fuente eclipse

Tengo un proyecto maven en eclipse y tengo objectives maven que ejecutan procesadores de anotación para generar código. La carpeta de salida para este código es target / generated-sources / apt.

Para que eclipse vea este código generado, necesito agregar target / generated-sources / apt como carpeta fuente al proyecto eclipse.

Sin embargo, esto causa que haya un error de tipo “Problema de configuración de Maven” que dice

La configuración del proyecto no está actualizada con pom.xml. Ejecutar actualización de configuración del proyecto

Creo que entiendo por qué este es el caso, ya que eclipse tiene un conjunto diferente de carpetas de origen para el conjunto de Maven. Pero necesito este conjunto diferente, ya que necesito eclipse para poder ver las carpetas de origen generadas …

Al hacer un maven puro construido, estas carpetas fuente se incluirán en la construcción, por maven.

Por cierto, me actualicé a la versión oficial de eclipse del plugin maven eclipse, m2e 1.0 – lo que solía ser m2eclipse. Me gustaría ver si puedo encontrar una solución alternativa a esto con el plugin m2e antes de tener que volver a la versión antigua de m2eclipse.

Debe adjuntar el directorio de origen con el build-helper-plugin .

Al igual que:

 org.codehaus.mojo build-helper-maven-plugin   add-source generate-sources  add-source    ${project.build.directory}/generated-sources/java/      

También necesitarás:

Haga clic derecho en el mensaje de error:

La configuración del proyecto no está actualizada con pom.xml Ejecutar la actualización de la configuración del proyecto

en la Vista de problemas, seleccione Corrección rápida y haga clic en Finalizar para seleccionar la configuración predeterminada del proyecto de actualización . Esto lo arregla

Después de cambiar a nuevas versiones de m2e / maven / apt, … tuve builderrors debido a los archivos duplicados, causados ​​por el buildpath agregado por buildhelper, por lo que necesitaba eliminar los “apt-generated” -Folders de buildhelper.

Para solucionar el problema en Eclipse, sin agregar la carpeta “apt-generated” a través de Update Maven Configuration en M2E, escribí un complemento M2E para solucionar este problema. Agrega los outputDirectories configurados en maven-apt-plugin al buildpath del proyecto.

https://apt-m2e.googlecode.com

En m2e 1.0, el manejo de los complementos de Maven ha cambiado. Es posible que carezca de una extensión m2e específica para su complemento de generación de código. Aquí está toda la documentación que logré encontrar.

Este informe de error también puede ser relevante.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081

solicite a CXF JIRA (consulte 1 ) que agregue asignaciones de ciclo de vida en el cxf-codegen-plugin. Esto requeriría m2e 1.1, pero creo que es un mejor enfoque que tener conectores construidos fuera del proyecto cxf, suponiendo que la API de mapeo del ciclo de vida cambiaría con menor frecuencia que cxf-codegen-plugin y cxf.

También puede usar el conector buildhelper m2e disponible en el catálogo de descubrimiento. Estoy usando Eclipse 3.7

Eclipse Java EE IDE para desarrolladores web. Versión: Juno Service Release 1

 mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo \ -DarchetypeArtifactId=gwt-maven-plugin \ -DarchetypeVersion=2.5.0 mvn clean install 

funciona a la perfección

Pero en eclipse tengo el mismo error en la clase Asinc.

Simplemente presione F5 en el proyecto. Soluciona este problema

Esto fue lo que encontré que funcionó bien utilizando la spring 3.1.1 que también tiene la versión 3.0.6. Una vez que obtuve la configuración de los complementos y la coloqué en el área correcta del pom e incluí los cables argelinos y endosados ​​para hacer que las fonts de Java salgan a la carpeta target / generated-sources / cxf, maven generó las fonts ok.

….

  ...  .....   ....    eSurety    org.apache.maven.plugins maven-compiler-plugin 2.4  1.6 1.6      org.apache.tomcat.maven tomcat7-maven-plugin 2.0     org.apache.maven.plugins maven-compiler-plugin   target/generated-sources/cxf     org.apache.maven.plugins maven-surefire-plugin 2.12  once -Djava.endorsed.dirs=target/generated-sources/cxf    org.apache.maven.plugins maven-compiler-plugin   target/generated-sources/cxf     org.apache.maven.plugins maven-surefire-plugin  once -Djava.endorsed.dirs=target/generated-sources/cxf    org.apache.maven.plugins maven-dependency-plugin    javax.xml.bind jaxb-api 2.2   javax.xml.ws jaxws-api 2.2   target/generated-sources/cxf            projName    org.apache.cxf cxf-codegen-plugin 2.5.2   process-sources generate-sources  once -Djava.endorsed.dirs=target/generated-sources/cxf   wsdl2java      com.sun.xml.bind jaxb-impl 2.2   com.sun.xml.bind jaxb-xjc 2.2      maven-war-plugin 2.2      

Si su carpeta wsdl está en $ {basedir} / src / main / resources lo encontrará automáticamente

¡Espero que esto ayude! ~ wildbill

En caso de que por alguna razón no puedas usar el plugin build helper de la manera más fácil (aunque no tan conveniente y tediosa) que he encontrado para lidiar con esto es:

  1. Separe el código fuente generado en su propio proyecto o submódulo.
  2. Querrá mantener este proyecto predominantemente cerrado o no importado a Eclipse cuando esté trabajando en el proyecto principal.
  3. En el proyecto principal que necesita el código generado, asegúrese de depender ahora del proyecto de código fuente generado a través de la dependencia de Maven pom.
  4. Cuando necesite actualizar el código generado, vaya al proyecto de código generado y ejecute mvn install . Ahora actualice el proyecto principal haciendo clic derecho y seleccionando Maven-> Actualizar proyecto …

En general, esto funciona bien para los proyectos que usan una fuente semi estática para la generación de código como SOAP WSDL (Apache CXF) o el código generado a partir de una base de datos (jOOQ). Para APT y otro código similar a AspectJ, no funciona tan bien porque está editando la fuente con frecuencia.

la configuración del plugin build helper funcionó para nosotros.

pero tenga en cuenta que la carpeta de destino siempre debe ser igual a la configuración del complemento que está utilizando para el procesamiento de la anotación.

por ejemplo, maven-processor-plugin usa la carpeta de destino $ {project.build.directory} / generated-sources / apt como valor predeterminado. si desea otro destino para sus archivos fuente generados, puede configurarlo con la etiqueta como se muestra a continuación.

  org.bsc.maven maven-processor-plugin 2.1.1   process  process  process-sources  apt_generated  com.any.processor.invoker      

Aquí está la solución

  1. Abrir vista de marcador (Ventana> Mostrar vista
  2. Haga clic derecho en el mensaje de error
  3. Seleccione la solución rápida
  4. Haga clic en Finalizar