我的 Eclipse Luna 中的 Maven 项目给了我这两个警告:
单根规则被破坏:Web 项目或 EAR 项目只允许有一个部署路径为“/”的元素
和
破坏单根规则:Web 项目的输出文件夹必须是 /WEB-INF/classesconfigurations-web
发生这种情况是因为 maven 插件使用 org.eclipse.wst.common.component 中的以下 wb-resources 设置项目配置
<?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 Web 项目,从未遇到过此类错误。
你的 pom 有什么特别的吗?请记住 Maven 的哲学是约定优于配置。可以省去很多问题。
当 Eclipse 对某些 Maven 项目疯狂时,我会执行以下操作:
按照以下步骤操作,看看问题是否仍然存在。
要在 2024 年解决此验证问题,请执行以下操作:
Window -> Preferences -> Validation
向下滚动约 2/3 并找到
Project Structure Validator
,单击 ...
,在 Inlude Group
下找到 Facet: EAR - jst.ear
,然后单击 Remove
、Ok
、Apply & Close
,然后重建项目。
org.eclipse.wst.common.component 的内容对于我在 Luna 中的 Maven 项目来说看起来很典型 - 我没有看到这些警告,但我禁用了所有验证器。
转到“首选项”、“验证”和“全部暂停”。您可以找出哪个验证器正在生成消息并禁用该验证器。