Maven执行spring-boot:run报错:无法在Exclude类中找到'version'
问题
在IntelliJ IDE中可正常启动Spring Boot应用,但终端执行mvn clean spring-boot:run命令时构建失败,报错信息如下:
无法解析org.springframework.boot:spring-boot-maven-plugin:3.0.1:run目标的配置,参数version存在问题——在org.springframework.boot.maven.Exclude类中找不到'version'。
已尝试以下操作但未解决:
- 更换Spring Boot版本
- 为父依赖添加
<version>标签 - 删除.m2文件夹重新下载所有依赖
- 重装Maven
当前pom.xml内容:
<?xml version="1.0" encoding="UTF-8"?> <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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.pedrycz</groupId> <artifactId>tobebought</artifactId> <version>0.0.1-SNAPSHOT</version> <name>tobebought</name> <description>Service allowing users to store their shopping lists</description> <properties> <java.version>19.0.1</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.passay/passay --> <dependency> <groupId>org.passay</groupId> <artifactId>passay</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <version>6.0.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>4.2.1</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.4.2.Final</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-mapstruct-binding --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> <!-- <scope>provided</scope>--> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${project.parent.version}</version> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.4.2.Final</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> </project>
解决方案
核心问题修复
报错的直接原因是spring-boot-maven-plugin的exclude配置中额外添加了version字段,而Spring Boot Maven插件的Exclude类仅支持groupId和artifactId两个参数,不需要指定版本。
修改spring-boot-maven-plugin的配置部分,移除exclude里的version标签:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${project.parent.version}</version> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <!-- 移除多余的version标签 --> </exclude> </excludes> </configuration> </plugin>
额外优化建议
- 移除Spring Boot Starter依赖的手动版本号:由于已经继承了
spring-boot-starter-parent,它会自动管理所有starter类依赖的版本,无需手动指定version,比如spring-boot-starter-security、spring-boot-starter-web等依赖可以删除version标签,避免版本不一致问题。 - 统一Java版本配置:pom.properties中配置的
java.version=19.0.1,但maven-compiler-plugin里指定的source和target为1.8,会导致版本冲突,建议将compiler插件的版本配置改为:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.4.2.Final</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin>
- 移除重复依赖:
jakarta.validation-api已经被spring-boot-starter-validation包含,手动添加会导致版本重复,建议删除该依赖。
内容的提问来源于stack exchange,提问作者wazzupek01
相关产品推荐
相关产品推荐

