2009-08-06 9 views
6

Estoy probando m2eclipse, el plugin de Eclipse para Maven, y he notado que los recursos ahora están excluidos de la ruta de compilación de todos mis proyectos.¿Por qué m2eclipse excluye recursos de la ruta de compilación de Eclipse?

he visto a question on the M2Eclipse FAQ page que parece hacer frente a esta pregunta exacta, pero la respuesta (parafraseado) parece decir que esto es intencional para permitir el filtrado de recursos, y todo debería sólo trabajo.

Sin embargo, cuando ejecuto mi aplicación desde Eclipse, mi aplicación no puede encontrar muchos de mis recursos en proyectos dependientes.

He intentado mis acciones habituales de Eclipse agitando un guante de pollo (limpiando todos los proyectos, comenzando por -limpiar) en vano. Estoy seguro de que me estoy perdiendo algo bastante simple. ¿Alguien tiene alguna sugerencia?

EDIT: Algunas excavaciones en la consola m2 han revelado que uno de los proyectos no se está construyendo correctamente. Obtengo ClassNotFoundException cuando intenta encontrar org.apache.maven.plugin.MojoFailureException en un complemento personalizado que se utiliza para crear uno de los proyectos.

 
org.apache.maven.lifecycle.LifecycleExecutionException: Internal error in the plugin manager executing goal 'ourdemain:ourcustomplugin:2.0:process': Mojo execution failed. 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:505) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149) 
    at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223) 
    at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1) 
    at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904) 
    at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304) 
    at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1) 
    at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant$1.execute(DefaultBuildParticipant.java:130) 
    at org.maven.ide.eclipse.internal.project.MavenProjectManagerImpl.execute(MavenProjectManagerImpl.java:986) 
    at org.maven.ide.eclipse.internal.project.MavenProjectFacade.execute(MavenProjectFacade.java:320) 
    at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.executePostBuild(DefaultBuildParticipant.java:116) 
    at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.build(DefaultBuildParticipant.java:80) 
    at org.maven.ide.eclipse.internal.builder.MavenBuilder.build(MavenBuilder.java:84) 
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633) 
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Caused by: org.apache.maven.plugin.PluginExecutionException: Mojo execution failed. 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:601) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498) 
    ... 27 more 
Caused by: org.apache.maven.plugin.MojoExecutionException: org/apache/maven/plugin/MojoFailureException 
    at org.codehaus.mojo.ruby.DefaultRubyMojo.execute(DefaultRubyMojo.java:98) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579) 
    ... 28 more 
Caused by: java.lang.NoClassDefFoundError: org/apache/maven/plugin/MojoFailureException 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
    at java.lang.Class.getConstructor0(Class.java:2699) 
    at java.lang.Class.getConstructor(Class.java:1657) 
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:587) 
    at org.jruby.javasupport.Java.new_proxy_instance(Java.java:570) 
    at org.jruby.javasupport.JavaInvokerSnew_proxy_instancexx1.call(Unknown Source) 
    at org.jruby.runtime.callback.InvocationCallback.execute(InvocationCallback.java:49) 
    at org.jruby.internal.runtime.methods.FullFunctionCallbackMethod.internalCall(FullFunctionCallbackMethod.java:79) 
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 
    at org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:577) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 
    at org.jruby.evaluator.EvaluationState.setupArgs(EvaluationState.java:2182) 
    at org.jruby.evaluator.EvaluationState.attrAssignNode(EvaluationState.java:481) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:191) 
    at org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:522) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:200) 
    at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 
    at org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:167) 
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:125) 
    at org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:564) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 
    at org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:544) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 
    at org.jruby.evaluator.EvaluationState.localAsgnNode(EvaluationState.java:1230) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:285) 
    at org.jruby.evaluator.EvaluationState.rescueNode(EvaluationState.java:1522) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:349) 
    at org.jruby.evaluator.EvaluationState.ensureNode(EvaluationState.java:980) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:246) 
    at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 
    at org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:167) 
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:125) 
    at org.jruby.evaluator.EvaluationState.fCallNode(EvaluationState.java:1019) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:252) 
    at org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:522) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:200) 
    at org.jruby.evaluator.EvaluationState.rootNode(EvaluationState.java:1622) 
    at org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:355) 
    at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 
    at org.jruby.Ruby.eval(Ruby.java:274) 
    at org.codehaus.plexus.component.jruby.JRubyRuntimeInvoker.runInterpreter(JRubyRuntimeInvoker.java:392) 
    at org.codehaus.plexus.component.jruby.JRubyRuntimeInvoker.invoke(JRubyRuntimeInvoker.java:313) 
    at org.codehaus.mojo.ruby.DefaultRubyMojo.execute(DefaultRubyMojo.java:81) 
    ... 29 more 
Caused by: java.lang.ClassNotFoundException: org.apache.maven.plugin.MojoFailureException 
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:251) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 
    ... 75 more 

Respuesta

5

El filtrado de los recursos mencionados en el FAQ ejecutarse cada vez que el constructor Maven se ejecuta en el proyecto. En la práctica, descubrí que esto es más problemático de lo que vale, ya que el constructor de Maven funciona con bastante lentitud, y solo se ejecuta cuando está configurado (que de forma predeterminada solo está en una compilación completa), lo que hace que te rasques la cabeza y te preguntes por qué los cambios no son recogidos.

Tiendo a modificar el classpath Eclipse para incluir src/main/resources. Esto es suficiente para la mayoría de los casos de uso.

Para los casos donde el enfoque simple no funciona (por ejemplo, si un proyecto dependiente tiene un procesamiento de recursos complicado), hago lo que Robert sugiere y apago la resolución del espacio de trabajo, luego instalo la dependencia en el repositorio local para que está incluido en el contenedor Maven classpath.

3

Trate de cambiar entre la (3.0 yo sepa) Maven tiempo de ejecución incorporada y la que se utiliza para realizar tus construcciones (instalado localmente).

Maven installations http://img150.imageshack.us/img150/6193/m2eclipseinstallations.png

+0

Gracias por la sugerencia - He intentado esto y no hizo ninguna diferencia. –

+1

¿Ha intentado desactivar la resolución del espacio de trabajo? A continuación, creará cada proyecto según los artefactos ya instalados en su repositorio. –

Cuestiones relacionadas