为什么 m2eclipse 从 Eclipse 构建路径中排除资源?

发布于 2024-07-30 20:57:15 字数 8361 浏览 5 评论 0原文

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

我在M2Eclipse FAQ 页面上看到了一个问题< /a> 这似乎处理了这个确切的问题,但答案(解释)似乎是说这是故意允许资源过滤的,并且一切都应该正常工作。

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

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

编辑:对 m2 控制台的一些挖掘表明,其中一个项目未正确构建。 当它尝试在用于构建其中一个项目的自定义插件中查找 org.apache.maven.plugin.MojoFailureException 时,我收到一个 ClassNotFoundException 异常。

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

I am trying out m2eclipse, the Eclipse plugin for Maven, and have noticed that the resources are now excluded from the build path of all my projects.

I have seen a question on the M2Eclipse FAQ page which seems to deal with this exact question, but the answer (paraphrased) seems to say that this is intentional to allow resource filtering, and everything Should Just Work.

However, when I run my application from within Eclipse, lots of my resources in dependent projects are failing to get found by my application.

I have tried my usual Eclipse waving-a-rubber-chicken actions (cleaning all projects, starting with -clean) to no avail. I'm sure I'm missing something fairly simple. Does anyone have any suggestions?

EDIT: Some digging in the m2 console has revealed that one of the projects is not building correctly. I get a ClassNotFoundException when it tries to find org.apache.maven.plugin.MojoFailureException in a custom plugin used to build one of the projects.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

金橙橙 2024-08-06 20:57:15

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

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

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

The resource filtering mentioned in the FAQ is run whenever the Maven builder is run on the project. In practice I've found this to be more trouble than it's worth as the Maven builder runs quite slowly, and is only run when configured (which by default is only on a full build), leaving you to scratch your head and wonder why your changes aren't picked up.

I tend to modify the Eclipse classpath to include src/main/resources. This is sufficient for most use cases.

For the cases where the simple approach doesn't work (for example if a dependent project has some complicated resource processing), I do as Robert suggests and turn off workspace resolution, then install the dependency to the local repository so it is included in the Maven classpath container.

喜爱纠缠 2024-08-06 20:57:15

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

Maven 安装 http://img150.imageshack.us/img150/6193/m2eclipseinstallations.png< /a>

Try switching between the embedded ( 3.0 AFAIK ) Maven runtime and the one you use to perform your builds ( locally installed ).

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文