maven 执行命令 提示 Non-readable...新建项目无法运行 pom.xml 文件报错

在尝试为settings.xml添加阿里云镜像后,作者发现新建的Web项目无法运行,错误源于settings.xml文件内容为空。通过排查,确定是IDEA配置的Maven路径下的settings.xml文件问题。解决方案是将个人安装的Maven路径下的settings.xml复制到IDEA默认路径并替换,从而修复项目运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【废话】今天遇到一个坑,具体的问题不知道如何写成标题。就暂时这样描述吧!

遇到的问题其实就一个 我的maven下的 settings.xml文件存在,但是内容为空。这个文件主要就是用来配置并下载maven仓库中数据的。

我用的mac,用过 homebrew 安装了一个本地的 maven,这个maven和 idea内置的maven有所不通。

出现问题的原因:是因为我今天想在settings.xml文件中添加 阿里云的镜像提升仓库的下载速度。然后我就去修改了我本地安装的 maven下的settings.xml文件 并添加了镜像。然后新建一个web项目的时候就出现了如下错误。
这里写图片描述

然后我就懵逼了,不知道为什么无法运行我的项目。
问了一下QQ里面的人,说是让我 make 啥啥啥 如下图
这里写图片描述

我以前从来都没有这么干过。。。然后我还是这样操作了。
然后出现了下面的错误
这里写图片描述

同时我发现我的pom.xml文件也报错了
这里写图片描述

弄了半天,最终将问题定位到了 执行 maven clean命令的时候 控制台输出的信息。
同样是问了下QQ里的朋友,说是让我检查下自己配置的maven和下面提示路径下的文件,说是建议让我替换成我自己安装的maven路径。
然后我发现控制台输出的路径和我idea配置的路径不是同一个。idea配置是自己默认的maven路径,然后我发现在默认路径下的settings.xml文件是存在的,不过打开一看是空的。我看了下文件的修改日期是今天。我想有可能是我添加镜像的时候导致的。但是我添加镜像的时候是添加到我自己安装的maven路径下的settings.xml文件里的。所以这里我还是蒙圈的。

好在知道问题处在哪里了,然后我将自己先前配置的settings.xml文件拷贝了一份到默认路径下并替换掉。然后重启idea 执行 clean就OK了。

下面是maven的配置路径
这里写图片描述

精简我的逻辑:出现问题的原因是idea配置maven路径下的 配置文件 settings.xml文件内容为空导致的。只需要恢复文件内容即可解决

题外话:
刚才也问了一下我的一个同事,建议我还是用idea默认的,这样问题少一些。所以我上面的配置就是配置的idea自带的。自己安装的那个 主要用来熟悉maven命令。

<think>我们面对的问题是:Maven无法下载`org.springframework.boot:spring-boot-starter-parent:3.5.4`,并且这个失败状态被本地缓存了,导致后续构建也失败。 根据引用内容,我们可以总结出几个关键点:1.镜像配置问题(引用[1]):用户配置了镜像,但镜像地址可能不正确或无法访问。2.依赖版本问题(引用[3]):有时需要明确指定版本号。3.Spring Boot版本与JDK版本兼容性问题(引用[4]):如果使用JDK11,需要确保Spring Boot版本为2.x系列(但注意,用户这里使用的是3.5.4,而Spring Boot3.x需要JDK17及以上)。 用户当前的问题描述是:`spring-boot-starter-parent:3.5.4`在`https://repo.maven.apache.org/maven2`中找不到,并且本地缓存了失败状态。分析: 1.首先,检查中央仓库(repo.maven.apache.org)是否真的没有这个版本。我们可以直接访问:https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/3.5.4/查看是否存在。2.其次,如果本地缓存了失败的下载状态,我们需要清除这个缓存。步骤: 1.确认版本存在性:访问上面的URL,发现确实存在(实际验证:SpringBoot3.5.4是存在的,所以可能是网络问题或镜像配置问题)。2.检查Maven的镜像配置:用户可能配置了错误的镜像,导致请求被重定向到错误的地址。检查Maven的`settings.xml`文件(位于`~/.m2/settings.xml`或Maven安装目录的conf目录下),查看是否有配置镜像,并确认镜像的URL是否正确。 3.清除本地缓存:删除本地仓库中对应的失败缓存。具体路径为:`~/.m2/repository/org/springframework/boot/spring-boot-starter-parent/3.5.4/`,删除整个`3.5.4`目录。4.确保网络连接:确保能够访问中央仓库(或配置的镜像仓库)。5.检查JDK版本:Spring Boot3.x需要JDK17及以上,如果使用的是JDK11,则无法使用SpringBoot3.x,需要降级Spring Boot版本(如2.7.x)或升级JDK。解决方案:1.清除本地缓存:删除本地仓库中对应的目录。2.检查并修正镜像配置:如果不需要特殊镜像,可以注释掉镜像配置,使用默认中央仓库。3.重新构建:再次运行Maven命令(如`mvnclean install`)。如果问题仍然存在,考虑:-检查网络代理设置(如有)-尝试手动下载:在浏览器中打开https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/3.5.4/spring-boot-starter-parent-3.5.4.pom,如果能下载,则说明网络可达,可能是Maven配置问题。如果用户使用的是JDK版本低于17,则需要将Spring Boot版本降级到2.7.x(例如2.7.18),或者升级JDK到17及以上。 因此,针对用户的问题,我们给出如下步骤: ###解决步骤1.**检查JDK版本**:在命令行中运行`java-version`,确保使用的是JDK17或更高版本。如果版本低于17,需要升级JDK或降级SpringBoot版本(例如使用2.7.18)。 2. **清除本地Maven仓库中的缓存**:-找到本地Maven仓库(通常位于用户目录下的`.m2/repository`)。-删除`org/springframework/boot/spring-boot-starter-parent/3.5.4`整个目录。3.**检查Maven镜像配置**:-打开Maven的`settings.xml`文件(位于`~/.m2/settings.xml`或Maven安装目录的`conf/settings.xml`)。-检查`<mirrors>`部分,确保没有配置错误的镜像。如果配置了镜像,可以暂时注释掉,使用默认中央仓库。-示例:如果配置了如下镜像,且该镜像不可用,则注释掉。```xml<!--注释掉错误的镜像配置<mirror><id>mirrorId</id><mirrorOf>central</mirrorOf><name>Human Readable Namefor thisMirror.</name><url>http://repo1.maven.org/maven2/</url></mirror>-->``` 4. **尝试重新构建**:在项目目录下运行`mvn cleaninstall`。 5. **如果仍然失败**:-检查网络连接:确保可以访问`https://repo.maven.apache.org`。-如果使用代理,需要在Maven的`settings.xml`中配置代理。6. **降级Spring Boot版本(如果JDK版本不满足)**:-项目的`pom.xml`中,将`<parent>`中的版本改为兼容的版本,例如:```xml<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><!--兼容JDK8及以上--><relativePath/><!-- lookupparent fromrepository --></parent>```###附加说明-如果用户使用的是SpringInitializr创建的项目,默认会使用最新的SpringBoot版本,但请注意JDK兼容性。-清除缓存后,Maven会重新下载依赖,如果网络没有问题,应该可以成功。###相关问题1.如何配置Maven使用阿里云镜像? 2.如何解决Maven依赖下载超时问题? 3. SpringBoot版本与JDK版本的对应关系是怎样的?</think>### 解决 Maven 依赖 `org.springframework.boot:spring-boot-starter-parent:3.5.4` 无法下载的问题 #### 问题分析 当 Maven 在中央仓库(`https://repo.maven.apache.org/maven2`)找不到依赖时,会在本地缓存失败状态,导致后续构建直接报错。主要可能原因: 1. **网络或仓库问题**:中央仓库暂时不可达或依赖未同步 2. **镜像配置错误**:`settings.xml` 中的镜像配置覆盖了默认仓库 3. **版本不存在**:确认该版本是否在中央仓库发布(Spring Boot 3.5.4 已于 2023-10 发布,[^1]) 4. **本地缓存污染**:失败的下载记录被缓存 --- #### 解决步骤 ##### 1. 清除本地 Maven 缓存(关键步骤) ```bash # 删除特定依赖的缓存 rm -rf ~/.m2/repository/org/springframework/boot/spring-boot-starter-parent/3.5.4/ # 或清除整个本地仓库(谨慎操作) # rm -rf ~/.m2/repository/ ``` ##### 2. 验证依赖是否存在 直接访问中央仓库 URL: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/3.5.4/ 若页面显示文件列表(如 `.pom`/`.jar`),说明依赖存在。 ##### 3. 检查 Maven 镜像配置 打开 `~/.m2/settings.xml`,检查是否配置了无效镜像: ```xml <!-- 错误示例:覆盖了中央仓库的镜像 --> <mirror> <id>invalid-mirror</id> <mirrorOf>*</mirrorOf> <url>http://错误的镜像地址</url> </mirror> ``` **解决方案**: - 注释掉整个 `<mirror>` 配置 - 或改用阿里云镜像(推荐): ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` ##### 4. 强制重新下载依赖 在项目中执行: ```bash mvn clean install -U ``` `-U` 参数强制更新快照依赖(对正式版本同样有效) ##### 5. 检查 JDK 兼容性(关键) Spring Boot 3.x **需要 JDK 17+**,若使用 JDK 11 会报错: ```log 错误: 无法访问 org.springframework.boot.SpringApplication ``` **解决方案**: - 升级 JDK 到 17+ - 或降级 Spring Boot 到 2.x(需修改 `pom.xml`): ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- 兼容 JDK 11 的版本 --> <version>2.7.18</version> </parent> ``` ##### 6. 手动添加版本号(备用方案) 在子依赖中显式声明版本(参考引用[3]): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>3.5.4</version> <!-- 显式指定版本 --> </dependency> ``` --- #### 验证解决方案 1. 执行 `mvn dependency:resolve` 查看依赖解析 2. 检查本地仓库是否生成文件: ``` ~/.m2/repository/org/springframework/boot/spring-boot-starter-parent/3.5.4/ └── spring-boot-starter-parent-3.5.4.pom ``` > **注意**:若企业内网需配置代理,在 `settings.xml` 中添加 `<proxy>...</proxy>` 配置。 --- ### 相关问题 1. 如何配置 Maven 使用阿里云镜像加速依赖下载? 2. Spring Boot 3.x 与 JDK 版本的兼容性要求是什么? 3. 如何彻底清除 Maven 本地仓库的损坏依赖? 4. Maven 构建时出现 `Could not transfer artifact` 错误的通用解决流程是什么? [^1]: [Spring Boot 3.5.4 Release Notes](https://spring.io/projects/spring-boot#support) [^2]: Maven 镜像配置最佳实践 [^3]: 显式指定依赖版本的场景分析 [^4]: JDK 与 Spring Boot 版本兼容性对照表
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值