我在Eclipse Luna中的maven项目给了我两个警告:
破坏的单根规则:web项目或EAR项目只允许使用一个部署路径为"/"的元素
和
断开的单根规则:web项目的输出文件夹必须是/web-INF/classes configurations web
之所以会发生这种情况,是因为maven插件使用org.eclipse.wst.commmon.component 中的以下wb资源设置了项目配置
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="sample-web">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/.apt_generated"/>
<property name="context-root" value="sample"/>
<property name="java-output-path" value="/sample-web/target/classes"/>
</wb-module>
</project-modules>
如何禁用此验证以消除这些烦人的警告?
这就是我所做的,以消除这种多余的警告;
Window->Preferences->Validation.
现在,在这里查找Project Structure Validation
,取消选中这两个选项(手动和构建),警告就不再麻烦了。
在我的基于Gradle的Spring Boot项目中,有类似的资源目录会导致问题,但不会再出现了。
希望这能帮助其他人。
如果您想停用警告,可以转到"项目结构验证器",然后转到"…",然后删除"Facet:动态Web模块-jst.Web"。
这很奇怪。我曾在luna从事过maven网络项目,从未出现过这样的错误。
你的pom里有什么特别的吗?记住,maven的哲学是约定而非配置。它省去了很多问题。
当eclipse为某个maven项目疯狂时,我会做以下事情:
- 删除项目,但不删除内容
- 从命令提示符或文件资源管理器,转到项目根目录,删除所有特定于eclipse的文件和目录,如.project、.classpath、.apt_generated…,以及输出目录,如target。通常,应该只保留pom.xml和src/
- 从eclipse导入现有的maven项目并选择您的项目pom
- 让eclipse从pom自动配置项目,并在需要时"更新maven项目"
- 不要通过eclipse项目偏好直接接触项目配置。总是修改pom,只需"更新maven项目"
按照以下步骤操作,查看问题是否仍然存在。
org.eclipse.wst.commmon.com组件的内容看起来是我在Luna中的Maven项目的典型内容-我没有看到这些警告,但我禁用了所有验证程序。
转到"首选项"、"验证"one_answers"全部挂起"。您可以计算出哪个验证器正在生成消息,然后只禁用那个验证器。