【问题标题】:Why does m2eclipse exclude resources from Eclipse build path?为什么 m2eclipse 从 Eclipse 构建路径中排除资源?
【发布时间】:2010-11-17 06:36:20
【问题描述】:

我正在试用 Maven 的 Eclipse 插件 m2eclipse,并注意到这些资源现在已从我所有项目的构建路径中排除。

我看到a question on the M2Eclipse FAQ page 似乎处理了这个确切的问题,但答案(释义)似乎说这是有意允许资源过滤,并且一切都应该正常工作。

但是,当我在 Eclipse 中运行我的应用程序时,我的应用程序无法找到依赖项目中的许多资源。

我已经尝试了我通常的 Eclipse 挥动橡胶鸡操作(清理所有项目,从 -clean 开始)无济于事。我确定我错过了一些相当简单的东西。有人有什么建议吗?

编辑:在 m2 控制台中的一些挖掘发现其中一个项目没有正确构建。当它尝试在用于构建其中一个项目的自定义插件中查找 org.apache.maven.plugin.MojoFailureException 时,我得到一个 ClassNotFoundException

org.apache.maven.lifecycle.LifecycleExecutionException:插件管理器执行目标'ourdemain:ourcustomplugin:2.0:process'中的内部错误:Mojo执行失败。 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:505) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149) 在 org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223) 在 org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1) 在 org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904) 在 org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304) 在 org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1) 在 org.maven.ide.eclipse.internal.project.DefaultBuildParticipant$1.execute(DefaultBuildParticipant.java:130) 在 org.maven.ide.eclipse.internal.project.MavenProjectManagerImpl.execute(MavenProjectManagerImpl.java:986) 在 org.maven.ide.eclipse.internal.project.MavenProjectFacade.execute(MavenProjectFacade.java:320) 在 org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.executePostBuild(DefaultBuildParticipant.java:116) 在 org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.build(DefaultBuildParticipant.java:80) 在 org.maven.ide.eclipse.internal.builder.MavenBuilder.build(MavenBuilder.java:84) 在 org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633) 在 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 在 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 在 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 在 org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 在 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) 在 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 在 org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 在 org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 在 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 在 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 原因:org.apache.maven.plugin.PluginExecutionException:Mojo 执行失败。 在 org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:601) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498) ... 27 更多 引起:org.apache.maven.plugin.MojoExecutionException: org/apache/maven/plugin/MojoFailureException 在 org.codehaus.mojo.ruby.DefaultRubyMojo.execute(DefaultRubyMojo.java:98) 在 org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579) ... 28 更多 引起:java.lang.NoClassDefFoundError: org/apache/maven/plugin/MojoFailureException 在 java.lang.Class.getDeclaredConstructors0(本机方法) 在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 在 java.lang.Class.getConstructor0(Class.java:2699) 在 java.lang.Class.getConstructor(Class.java:1657) 在 java.lang.reflect.Proxy.newProxyInstance(Proxy.java:587) 在 org.jruby.javasupport.Java.new_proxy_instance(Java.java:570) 在 org.jruby.javasupport.JavaInvokerSnew_proxy_instancexx1.call(未知来源) 在 org.jruby.runtime.callback.InvocationCallback.execute(InvocationCallback.java:49) 在 org.jruby.internal.runtime.methods.FullFunctionCallbackMethod.internalCall(FullFunctionCallbackMethod.java:79) 在 org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 在 org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:577) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 在 org.jruby.evaluator.EvaluationState.setupArgs(EvaluationState.java:2182) 在 org.jruby.evaluator.EvaluationState.attrAssignNode(EvaluationState.java:481) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:191) 在 org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:522) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:200) 在 org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 在 org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:167) 在 org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 在 org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:125) 在 org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:564) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 在 org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:544) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:206) 在 org.jruby.evaluator.EvaluationState.localAsgnNode(EvaluationState.java:1230) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:285) 在 org.jruby.evaluator.EvaluationState.rescueNode(EvaluationState.java:1522) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:349) 在 org.jruby.evaluator.EvaluationState.ensureNode(EvaluationState.java:980) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:246) 在 org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 在 org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:167) 在 org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:79) 在 org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:125) 在 org.jruby.evaluator.EvaluationState.fCallNode(EvaluationState.java:1019) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:252) 在 org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:522) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:200) 在 org.jruby.evaluator.EvaluationState.rootNode(EvaluationState.java:1622) 在 org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:355) 在 org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:163) 在 org.jruby.Ruby.eval(Ruby.java:274) 在 org.codehaus.plexus.component.jruby.JRubyRuntimeInvoker.runInterpreter(JRubyRuntimeInvoker.java:392) 在 org.codehaus.plexus.component.jruby.JRubyRuntimeInvoker.invoke(JRubyRuntimeInvoker.java:313) 在 org.codehaus.mojo.ruby.DefaultRubyMojo.execute(DefaultRubyMojo.java:81) ... 29 更多 引起:java.lang.ClassNotFoundException:org.apache.maven.plugin.MojoFailureException 在 java.net.URLClassLoader$1.run(URLClassLoader.java:200) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:188) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:251) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) ... 75 更多

【问题讨论】:

    标签: java eclipse maven-2 m2eclipse


    【解决方案1】:

    尝试在嵌入式 (3.0 AFAIK) Maven 运行时和用于执行构建的运行时(本地安装)之间切换。

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

    【讨论】:

    • 感谢您的建议 - 我已经尝试过,但没有任何区别。
    • 您是否尝试过关闭工作区分辨率?然后,您将根据存储库中已安装的工件构建每个项目。
    【解决方案2】:

    在项目中运行 Maven 构建器时,FAQ 中提到的资源过滤就会运行。在实践中,我发现这比它的价值更麻烦,因为 Maven 构建器运行非常缓慢,并且仅在配置时运行(默认情况下仅在完整构建上),让您摸不着头脑,想知道为什么您的更改不会被拾取。

    我倾向于修改 Eclipse 类路径以包含 src/main/resources。这对于大多数用例来说已经足够了。

    对于简单方法不起作用的情况(例如,如果依赖项目有一些复杂的资源处理),我会按照 Robert 的建议关闭工作区解析,然后将依赖项安装到本地存储库,这样就可以了包含在 Maven 类路径容器中。

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2021-05-04
      • 2012-03-16
      相关资源
      最近更新 更多