Maven pom.xml报错Invalid element name : build如何解决
报错原因
标签嵌套不符合Maven POM规范。
按照POM 4.0.0的结构规则,<dependencies>和<build>是平级标签,二者都必须作为根标签<project>的直接子节点存在,<dependencies>节点内部只允许嵌套<dependency>标签。
你当前的配置把整个<build>配置块写到了<dependencies>标签内部,解析器在dependencies节点下扫描到不属于它的build标签,就抛出了「非法标签名,预期为dependency」的错误。从贴出的代码可以直接定位问题:写完两个dependency之后没有先闭合</dependencies>,就直接开始写build配置,直到build块写完才补dependencies的闭合标签,嵌套关系完全错误。
修复方法
- 把整个
<build>...</build>配置块剪切出来,放到</dependencies>闭合标签的后面,保证dependencies和build两个标签互不嵌套、同属project的子节点。 - 保存修改后的pom.xml,如果Eclipse没有自动刷新校验,右键项目选择
Maven -> Update Project,勾选强制更新选项后确认即可消除报错。
修复完成后的正确pom配置参考:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ll.test</groupId> <artifactId>Automation</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Automation</name> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.6.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>4.2.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> </plugin> </plugins> </build> </project>
注意事项
后续编写POM时注意标签闭合顺序:先打开的标签后闭合,同级标签不要交叉嵌套。project根节点下的常用子节点按常规顺序一般是modelVersion、项目坐标(groupId/artifactId/version)、项目描述信息、dependencies、dependencyManagement、build、properties等,写错嵌套位置很容易触发这类格式解析错误。
内容的提问来源于stack exchange,提问作者NB6
相关产品推荐
相关产品推荐

