删除.m2文件夹后Maven Install报错,首次运行曾成功
解决SpringBatchSample项目删除.m2后
mvn install失败的问题 你的问题根源在于pom.xml中的依赖冲突、版本不兼容以及配置不一致——第一次构建成功是因为本地.m2仓库中可能存在之前残留的兼容依赖,删除后重新下载时这些问题就彻底暴露出来了。下面是具体的解决方案:
1. 修复pom.xml中的核心问题
(1)移除冲突的错误依赖
你的pom里有一个明显错误的Spring Batch依赖:
<dependency> <groupId>org.springframework.batch</groupId> <artifactId>org.springframework.batch.core</artifactId> <version>2.1.1.RELEASE</version> </dependency>
这个依赖的artifactId是错误的(正确值应为spring-batch-core),而且版本2.1.1.RELEASE和你同时引入的3.0.7.RELEASE版本的Spring Batch核心依赖完全冲突,直接删除这一段即可。
(2)修复Spring Framework与Spring Batch的版本兼容性
Spring Batch 3.0.7.RELEASE需要依赖Spring Framework 4.2.9.RELEASE及以上版本,但你当前使用的Spring 3.1.3.RELEASE版本过于老旧,两者完全不兼容。建议将Spring版本升级到稳定兼容的4.3.30.RELEASE。
(3)统一JDK版本配置
你的pom中properties里配置的jdk.version是1.8,但maven-compiler-plugin却指定了source和target为1.6,这会导致编译时版本不一致的问题。需要将插件配置与properties统一,同时建议升级插件版本到支持JDK8的版本。
2. 修改后的关键pom片段参考
Properties部分
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jdk.version>1.8</jdk.version> <spring.version>4.3.30.RELEASE</spring.version> <spring.batch.version>3.0.7.RELEASE</spring.version> </properties>
Dependencies部分(清理后)
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- Spring Framework依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <!-- Spring Batch依赖(统一版本) --> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-core</artifactId> <version>${spring.batch.version}</version> </dependency> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-infrastructure</artifactId> <version>${spring.batch.version}</version> </dependency> <!-- Spring Batch测试依赖,建议加上test scope --> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-test</artifactId> <version>${spring.batch.version}</version> <scope>test</scope> </dependency> </dependencies>
Build部分的Compiler插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 升级到支持JDK8的插件版本 --> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
3. 执行清理并重新构建
修改完pom后,执行以下命令强制更新依赖并重新构建:
mvn clean install -U
-U参数会强制Maven更新快照和依赖,确保从仓库下载正确的兼容版本。
这样就能解决删除.m2后构建失败的问题了。
内容的提问来源于stack exchange,提问作者user2991123
相关产品推荐
相关产品推荐

