Почему m2eclipse исключает ресурсы из пути сборки Eclipse?

Я пробую m2eclipse, подключаемый модуль Eclipse для Maven, и заметил, что ресурсы теперь исключен из пути сборки всех моих проектов.

Я видел вопрос на странице часто задаваемых вопросов по M2Eclipse который, кажется, имеет дело именно с этим вопросом, но ответ (перефразированный), кажется, говорит, что это сделано намеренно, чтобы разрешить фильтрацию ресурсов, и все должно просто работать.

Однако, когда я запускаю свое приложение из Eclipse, многие мои ресурсы в зависимых проектах не могут быть найдены моим приложением.

Я пробовал свои обычные действия Eclipse по размахиванию резиновой курицей (очистка всех проектов, начиная с -clean), но безрезультатно. Я уверен, что упускаю что-то довольно простое. У кого-нибудь есть предложения?

РЕДАКТИРОВАТЬ: Некоторое копание в консоли m2 показало, что один из проектов строится неправильно. Я получаю ClassNotFoundException, когда он пытается найти org.apache.maven.plugin.MojoFailureException в пользовательском плагине, используемом для создания одного из проектов.

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

person Simon Nickerson    schedule 06.08.2009    source источник


Ответы (2)


Фильтрация ресурсов, упомянутая в FAQ, запускается всякий раз, когда в проекте запускается сборщик Maven. На практике я обнаружил, что это доставляет больше проблем, чем того стоит, поскольку сборщик Maven работает довольно медленно и запускается только при настройке (что по умолчанию только при полной сборке), оставляя вас почесать голову и задаться вопросом, почему ваш изменения не подхватываются.

Я склонен изменять путь к классам Eclipse, чтобы включить src/main/resources. Этого достаточно для большинства случаев использования.

В тех случаях, когда простой подход не работает (например, если зависимый проект имеет сложную обработку ресурсов), я делаю, как предлагает Роберт, и отключаю разрешение рабочей области, а затем устанавливаю зависимость в локальный репозиторий, чтобы она была включена в Контейнер класса Maven.

person Rich Seller    schedule 06.08.2009