M2E y tener carpetas de origen generadas por maven como carpetas de origen de eclipse


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 de origen al proyecto eclipse.

Sin embargo, esto hace que haya un error de tipo "Maven Configuration Problem" diciendo

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

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

Al hacer una compilación pura de maven, estas carpetas de origen se incluirán en la compilación, por maven.

Por cierto, he actualizado a la versión oficial de eclipse del plugin maven eclipse, m2e 1.0 - lo que solía ser m2eclipse. Me gustaría para ver si puedo encontrar un trabajo alrededor/solución a esto con el plugin m2e antes de tener que volver a la antigua versión m2eclipse.

Author: Michael Wiles, 2011-08-23

11 answers

Necesita adjuntar el directorio fuente con el build-helper-plugin.

Así:

 <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á:

 101
Author: Michael-O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-28 09:34:49

Haga clic con el botón derecho en el mensaje de error:

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

En la vista de problemas y seleccione Solución rápida y haga clic en Finish para seleccionar la configuración predeterminada Update project configuration. Esto lo arregla.

 79
Author: peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-31 12:52:15

Después de cambiar a nuevas versiones de m2e / maven / apt,... tenía builderrors debido a los archivos duplicados, causados por el buildpath añadido por el buildhelper, así que necesitaba eliminar las carpetas "generadas por apt"del buildhelper.

Para solucionar el problema en Eclipse, no añadiendo la carpeta "generada por apt"a través de la configuración de Update Maven en M2E, he escrito un plugin de M2E para solucionar este problema. Añade los outputDirectories configurados en el maven-apt-plugin al buildpath de la Proyecto.

Https://apt-m2e.googlecode.com

 4
Author: Stefan Wo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-24 14:06:04

En m2e 1.0 el manejo de los plugins Maven ha cambiado. Es posible que te falte una extensión m2e específica para tu plugin de generación de código. Aquí está toda la documentación que logré encontrar.

Este informe de error también puede ser relevante.

 3
Author: Nicola Musatti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 08:59:36

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

Solicitud sobre CXF JIRA (ver 1) para agregar asignaciones de ciclo de vida en el propio complemento cxf-codegen. Esto requeriría m2e 1.1, pero creo que es mejor enfoque que tener conectores construidos fuera del proyecto cxf, asumiendo que la API de mapeo de ciclo de vida cambiaría con menos frecuencia que cxf-codegen-plugin y cxf.

 1
Author: Mike Grandmaison,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-10 23:33:19

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

 0
Author: Cédric Vidal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-23 08:00:42

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 perfectamente.

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

Simplemente presione F5 en el proyecto. Soluciona este problema.

 0
Author: burtsevyg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-29 08:38:45

Esto fue lo que encontré que funcionó bien usando spring 3.1.1 que también tiene la versión 3.0.6. Una vez que tengo la configuración de plugins y poner en el área correcta de la pom e incluido el argline y endorseddirs para tener las fuentes de Java puestos en la carpeta de destino/generated-sources/cxf entonces 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 la encontrará automáticamente

Espero que esto ayuda! ~wildbill

 0
Author: WildBill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-20 16:08:35

En caso de que por alguna razón no pueda usar el complemento build helper la forma más fácil (aunque no tan conveniente y algo 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 padre.
  3. En el proyecto padre que necesita el código generado, asegúrese de depender ahora del proyecto de código fuente a través de la dependencia 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 padre haciendo clic derecho y seleccionando Maven->Actualizar proyecto...

Esto generalmente funciona bien para proyectos que utilizan una fuente semiestática para la generación de código como SOAP WSDLs (Apache CXF) o código generado a partir de una base de datos (jOOQ). Para APT y otros AspectJ-like-code no funciona tan bien porque está editando la fuente con frecuencia.

 0
Author: Adam Gent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-12 16:36:35

La configuración del complemento build helper funcionó para nosotros.

Pero tenga en cuenta que la carpeta de destino siempre tiene que ser igual a la configuración del plugin que está utilizando para el procesamiento de anotaciones en sí.

Por ejemplo, el plugin maven-processor utiliza la carpeta de destino {{project.construir.directorio} / generated-sources / apt por defecto. si desea otro destino para sus archivos de origen generados, puede configurarlo mediante 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>
 -1
Author: Hannes Kogler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-13 13:28:35

Aquí está la solución

  1. Abrir la vista de marcador (Ventana > Mostrar vista
  2. Haga clic con el botón derecho en el mensaje de error
  3. Seleccione Solución rápida
  4. Haga clic en Finalizar
 -3
Author: imesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-21 06:12:30