2011-10-13 54 views
10

我有两个Maven-Eclipse集成非常恼人的问题,它不时从构建路径中排除src/main/resources和src/test/resources中的所有资源。Maven/M2Eclipse始终排除我的资源

如果我检查“属性”Java编译路径“源”我可以看到这两个文件夹有“排除:**”。

这个问题很容易通过点击排除的“删除”来解决,但它确实令人非常沮丧。

该项目设置非常简单,它有一些模块和子模块,但没有什么奇特的。我在pom.xmls中没有关于资源,eclipse或其他任何配置选项(也许我应该?)。

另一个问题是Eclipse不断在“目标”目录中报告警告(在“问题”视图中),它不应该首先给出一个该死的东西。

任何帮助表示赞赏。

谢谢你是进步, 马克

PS:SpringSource工具套件2.7.0.RELEASE,Maven的集成为Eclipse 0.12.1.20110112,Maven的2.2.1

+0

你解决了吗? –

回答

6

这是正确的行为。当前版本的M2E为Eclipse IDE内的自动构建过程提供了自己的贡献者。此构建过程考虑了生成资源和过程资源等的Maven生命周期...即某些项目具有可从配置生成资源并放入编译后的输出文件夹的插件。

您在构建路径中查看的机制仅涉及内置机制的Eclipse IDE,用于将一组输入源文件夹编译/汇编到输出文件夹中。如果Maven和Eclipse都这样做了,就会有冲突/问题。

有一个在M2E FAQ这个确切点一个链接http://wiki.eclipse.org/M2E_FAQ#Why_resource_folders_in_Java_project_have_excluded.3D.22.2A.22

如果你是真正具有不被复制,也许我们可以合作,通过这是为什么(因为那是另一回事)资源的问题,但你的主要问题是关于一个常见的M2E常见问题点。

也许你想升级到org.eclipse.m2e和Indigo作为很多Maven复杂的maven问题/用法我已经主要解决或有一个解释的解决方案。

。我会建议你执行一个“Run As - > Maven - > clean”然后一个“Project - > Clean”,然后启用自动bulding(这是为了允许基于Eclipse的自动构建发生,不要使用Run作为 - > Maven来构建来测试这一点)。现在在eclipse之外打开一个文件管理器,然后手动检查输出文件夹中是否有你不认为正在被复制的资源。你会发现他们在那里一样。

我同意关于target/**目录中的项目(可能是Validation)的警告,虽然Eclipse有办法从验证中手动排除target/**目录,但这个选项不会超出项目clean(when目标目录被删除)。

因此,总是在等待大型项目中项目的验证,这有点令人讨厌。

也许我试着看看是否可以创建一个Maven Eclipse连接器插件来执行此操作,即绑定到构建生命周期中并自动在目标文件夹上应用排除验证。

+0

非常感谢您的详细解答。 – nihilist84

+2

我仍然排除**,我没有得到任何答案如何解决它... – blackuprise

+0

排除**,是正确的,因为它应该是,你显然不明白为什么它是正确的解释,请研究并再次阅读。 –

0

T_T不是一个好的解决方案。如果没有maven更新,则不会复制资源


maven资源:生命周期映射中标记为忽略的资源阶段将导致此问题。

就像Miles上面指出的那样,eclipse不会复制资源,因为它假定maven会为你做。然后,如果在maven中执行作业的资源:资源阶段未执行,则会在运行时收到未找到文件异常。

检查这个开放

项目 - >属性 - > maven->生命周期映射

,看看是否资源:资源被标记为忽​​略或没有。

来解决它Windows的>优先 - > maven->生命周期mapping->打开的工作区的生命周期的映射元数据

然后改变

<action> 
    <ignore /> 
    </action> 

<action> 
    <execute /> 
    </action> 

为目标resources

重新加载元数据&更新maven项目

应该解决问题。

+0

FWIW did你确定要为build-helper-maven-plugin安装m2e连接器吗?你是否仍然需要上述的答案?据我所知,这使得影响classpath/building的很多目标/插件正常工作。 –