Pregunta

Me gustaría tener el plugin de Maven Eclipse regenerar mi .classpath cada vez que se ejecuta una acumulación, y lo hice con la siguiente configuración:

    <!--
        Generate a new .classpath each time the build is run, but don't try
        to download sources or javadocs
    -->
    <profile>
        <id>elipse-update</id>
        <activation>
            <file>
                <exists>.classpath</exists>
            </file>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>eclipse</goal>
                            </goals>
                            <configuration>
                                <downloadSources>false</downloadSources>
                                <downloadJavadocs>false</downloadJavadocs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

Por alguna razón, esto hace que el plug-in embarcadero experto a fallar con errores ClassNotFoundException (que se queja sobre todo tipo de clases de primavera no estar allí). Por supuesto, funcionó sin un hit cuando no tenía instalado el plugin eclipse experto. Aquí está un ejemplo de lo que estoy hablando:

$ mvn jetty:run
[INFO] Scanning for projects...
...
[INFO] Starting jetty 6.1.22 ...
2010-02-11 20:53:08.984:INFO::jetty-6.1.22
2010-02-11 20:53:09.109:WARN::Could not instantiate listener org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
        at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

Por supuesto, si elimino esa sección Eclipse plug-in, puedo correr amarre como se esperaba:

$ mvn jetty:run
[INFO] Scanning for projects...
...
Feb 11, 2010 8:55:28 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 1672 ms
2010-02-11 20:55:28.687:INFO::Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 5 seconds.

Algunas cosas que sé:

  • Sí, sólo activar este perfil si el .classpath está presente. Esto parece contrario a la intuición, pero tengo una razón: tengo otro perfil que se activa cuando el .classpath está ausente que se ejecuta el plugin de Eclipse con las opciones para descargar el código fuente y javadocs establecidas en true. No quiero que esto suceda cada generación, así que creé una configuración plug-in separado para cuando la ruta de clase ya está ahí.
  • Sí, yo podría simplemente crear propiedades que sostenían los valores de las opciones que desea cambiar en lugar de especificar toda la configuración plug-in de nuevo. En ese caso, me acaba de establecer una propiedad eclipse.downloadSources a verdadero o falso dependiendo de la presencia de la ruta de clase y tienen una única definición del plugin en la sección de acumulación regular.

Cualquier consejo? Este es un problema extraño.

Gracias, LES

¿Fue útil?

Solución

Sospecho que el Maven Eclipse Plugin para desastre hacer algunas woodo ruta de clases que afecta el plugin embarcadero más adelante.

Pero para ser honesto, esto no es una forma muy común utilizar el plugin para Eclipse, al menos no que yo sepa. La mayoría de las personas no se incluyen en su estructura, que acaba de ejecutarlo cuando el POM ha cambiado y esto no suele suceder cada proyecto de construcción. Por otra parte, al tocar la .classpath confunde Eclipse si recuerdo bien y obliga a una reconstrucción limpia del proyecto, que es bastante molesto.

Así que al final, y lo siento por eso, esto parece introducir más molestias que beneficios. Usted puede tratar de abrir una rel="nofollow Jira tema sin embargo.

Otros consejos

Usted realmente no desea ejecutar el experto en Eclipse-plugin en cada proyecto de construcción cuando hay un .classpath presente. No puedo decir exactamente lo que hace a las rutas de clases, pero esta no es la forma en que está destinado a ser utilizado. El supuesto es que cuando se ejecuta sólo se ejecuta Eclipse:. Eclipse (o algún otro objetivo)

¿Por qué desea mantener volver a ejecutarlo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top