sirve que problemas plugin para mvn descarga dependencias eclipse maven m2eclipse m2e

problemas - mvn eclipse eclipse para que sirve



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

Tengo un proyecto maven en eclipse y tengo objetivos 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.


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

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

Al igual que:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${project.build.directory}/generated-sources/java/</source> </sources> </configuration> </execution> </executions> </plugin>

También necesitarás:


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


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


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.


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 documentation que logré encontrar.

Este informe de error también puede ser relevante.


Esto fue lo que encontré que funcionó bien utilizando la primavera 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 fuentes de Java salgan a la carpeta target / generated-sources / cxf, maven generó las fuentes ok.

....

<properties>... <dependencyManagement> <dependencies>..... </dependencyManagement> <dependencies> <dependency>.... </dependencies> <!-- *************************** Build process ************************************* --> <build> <finalName>eSurety</finalName> <plugins> <!-- Force Java 6 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <!-- Deployent on AS from console <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>${version.jboss.as.maven.plugin}</version> </plugin> --> <!-- wildbill added tomcat plugin --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> </plugin> <!-- Surefire plugin before 2.9 version is buggy. No need to declare here, it''s being referenced below w/ the version <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> </plugin> --> <!-- developer added these --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <artifactItems> <artifactItem> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2</version> </artifactItem> <artifactItem> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2</version> </artifactItem> </artifactItems> <outputDirectory>target/generated-sources/cxf</outputDirectory> </configuration> </plugin> </plugins> </build> <!-- *********************** Profiles ************************************ --> <profiles> <profile> <!-- When built in OpenShift the ''openshift'' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the ''deployments'' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>projName</id> <build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>process-sources</id> <phase>generate-sources</phase> <configuration> <fork>once</fork> <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-xjc</artifactId> <version>2.2</version> </dependency> </dependencies> </plugin> <!-- Actual war created in default target dir --> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build> </profile> </profiles>

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

¡Espero que esto ayude! ~ wildbill


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


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


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.

<plugin> <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>process</id> <goals> <goal>process</goal> </goals> <phase>process-sources</phase> <configuration> <defaultOutputDirectory>apt_generated</defaultOutputDirectory> <processors> <processor>com.any.processor.invoker</processor> </processors> </configuration> </execution> </executions> </plugin>


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.