我有两个非常恼人的Maven-Eclipse集成问题,它不时地从构建路径中排除src / main / resources和src / test / resources中的所有资源。
如果我检查“属性>> Java构建路径>>来源”我可以看到这两个文件夹有“已排除:**”。
通过单击排除项目中的“删除”可以轻松解决问题,但这确实非常令人沮丧。
项目设置非常简单,它有一些模块和子模块,但没什么特别的。我的pom.xmls中没有关于资源,日食或其他任何配置选项(也许我应该这样做)。
另一个问题是Eclipse一直在“目标”目录中报告警告(在“问题”视图中),它首先不应该给出一个该死的。
Ps:Springsource Tool Suite 2.7.0.RELEASE,Eclipse的Maven Integration 0.12.1.20110112,Maven 2.2.1
答案 0 :(得分:6)
这是正确的行为。当前版本的M2E为Eclipse IDE中的自动构建过程提供了自己的贡献。这个构建过程考虑了生成资源和流程资源等的maven生命周期......即某个项目具有从配置生成资源并放入编译输出文件夹的插件。
您在Build Path中看到的机制仅与Eclipse IDE内置机制相关,用于将一组输入源文件夹编译/组装到输出文件夹中。如果Maven和Eclipse都这样做会有冲突/问题。
M2E常见问题解答中有一个关于此确切点https://www.eclipse.org/m2e/documentation/m2e-faq.html#how-to-configure-proxy-and-location-of-maven-local-repository
的链接如果您真的遇到资源未被复制的问题,我们可以解决这个原因(因为这是另一回事),但您的主要问题是关于M2E常见问题点。
也许你想要升级到org.eclipse.m2e和Indigo,因为很多Maven复杂的maven问题/用法我大多已经解决或有解释的解决方案。
我建议您执行"运行方式 - > Maven - >清洁"然后是"项目 - >清洁"然后启用自动bulding(这是为了允许基于Eclipse的自动构建,不要使用Run As - > Maven构建来测试这一点)。现在在eclipse外面打开一个文件管理器,并手动检查输出文件夹中是否有你认为没有被复制的资源。你应该会发现他们就是一样的。
我同意(可能是Validation)警告有关目标/ **目录中的项目,而Eclipse有办法从验证中手动排除目标/ **目录,此选项不会超出项目清理范围(当目标目录已删除。)
因此总是等待大型项目中的项目验证有点烦人。
也许我试图看看是否可以创建Maven Eclipse连接器插件来执行此操作,即绑定到构建生命周期并自动在目标文件夹上应用Exclude Validation。
答案 1 :(得分:0)
T_T不是一个好的解决方案。没有maven-update
就不会复制资源maven资源:Lifecycle Mappings中标记为忽略的资源阶段将导致此问题。
正如迈尔斯上面指出的那样,eclipse不会复制资源,因为它假定maven会为你做这件事。然后,如果资源:在maven中执行作业的资源阶段没有执行,则在运行时会收到文件未找到异常。
检查此打开
project-> properties-> maven->生命周期映射
并查看资源:资源是否被标记为忽略。
解决它windows-> preference-> maven->生命周期映射 - >打开工作区生命周期映射元数据
然后改变
<action>
<ignore />
</action>
到
<action>
<execute />
</action>
目标resources
重新加载元数据&amp;更新maven项目
应该解决问题。
答案 2 :(得分:0)