tutorial run para oxygen instalar consola java eclipse maven m2eclipse m2e

java - run - m2e: código generado con exec-maven-plugin



maven para eclipse oxygen (2)

He estado usando m2eclipse durante m2eclipse 2 años y ahora he cambiado a m2e .

Desafortunadamente, esto ha roto algunas funcionalidades para mí.

En muchos proyectos, he generado código Java, generalmente generado a través de una clase principal en un proyecto de biblioteca. Aquí hay una configuración típica:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <executions> <execution> <id>generateDTOs</id> <phase>generate-sources</phase> <goals> <goal>java</goal> </goals> <configuration> <classpathScope>test</classpathScope> <mainClass>com.somecompany.SomeCodeGenerator</mainClass> <arguments> <argument>${project.build.directory}/generated-sources/foo</argument> <argument>${project.basedir}/path/to/a/config/file</argument> <argument>more arguments</argument> </arguments> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>addDtoSourceFolder</id> <goals> <goal>add-source</goal> </goals> <phase>process-sources</phase> <configuration> <sources> <source>${project.build.directory}/generated-sources/foo</source> </sources> </configuration> </execution> </executions> </plugin>

Anteriormente, solo tendría que importar ese proyecto con eclipse como un proyecto experto, el código se ejecutaría automáticamente y la carpeta de origen se agregaría al proyecto de eclipse.

Ahora, m2e ha instalado un "conector" para el complemento buildhelper, por lo que se crea la carpeta de origen, pero tengo que activar manualmente la generación de código ejecutando Run As > Maven > generate-sources . Esto es realmente molesto, me gustaría que la compilación maven respondiera a los cambios de pom.xml, Project > Clean ... , Actualizaciones de SVN, inicio de Eclipse, etc. como lo hizo anteriormente.

¿Qué puedo hacer para hacer que m2e funcione como m2eclipse?


Debe decirle a M2E que está bien ejecutar su generador de código como parte de la compilación de Eclipse:

<project> <build> [...] <pluginManagement> <plugins> <!--This plugin''s configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. --> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <versionRange>[,)</versionRange> <goals> <goal>java</goal> </goals> </pluginExecutionFilter> <action> <execute/> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>

Notas:

  1. Es importante colocar esta configuración en la sección de administración de complementos, no directamente debajo de los complementos.
  2. Esto hará que M2E realice todas las ejecuciones java especificadas en su POM como parte de cada compilación de Eclipse. Esto significa que correrán a menudo y serán una gran molestia si son lentos. No estoy seguro de cómo obtendría M2E para ejecutar algunos de ellos y omitir otros. Probablemente tendrías que colocar las ejecuciones no deseadas en los perfiles.

En Eclipse puede definir qué paso del ciclo de vida se ejecutará durante una importación que está vacía por defecto. Simplemente puede cambiar esto a recursos de proceso o simplemente hacer Maven -> Actualizar la configuración del proyecto. En la configuración (Windows -> Preferencias -> Maven) puede cambiar el comportamiento predeterminado para simplificar su vida.