maven依赖包下载失败解决办法

本文详细介绍了在Eclipse中使用Maven插件时遇到的依赖下载失败问题及解决方案,包括清理.m2仓库中的.lastUpdated文件,配置阿里云Maven仓库以加速依赖下载,以及如何处理特定依赖包下载失败的情况。

在eclipse中安装了maven插件,项目在运行的时候,一直通过pom.xml文件下载jar包,一直下载不下来, 在更新maven库时,如果网络问不定或者是一些自己手动安装到本地maven库的jar包,在中心库找不到对应的jar, 会生成一些.lastUpdated文件,会导致m2e工具无法找到依赖的jar包,从而提示编译错误。 解决方法: 1. 找到本地maven仓库,我得是D:\maven_repository\repository; 2.搜索出该目录下的*lastUpdated.properties文件并删除,如下图所示,可以通过模糊搜索匹配出这样的文件

自从开源中国的maven仓库挂了之后就一直在用国外的仓库,慢得想要砸电脑的心都有了。如果你和我一样受够了国外maven仓库的龟速下载?快试试阿里云提供的maven仓库,从此不在浪费生命……(感谢博主http://www.cnblogs.com/keitsi/p/6000649.html)

仓库地址:http://maven.aliyun.com/nexus/#view-repositories;public~browsestorage

 

仓库配置

在maven的settings.xml文件里的mirrors节点,添加如下子节点:

复制代码
 
<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror> 
 
复制代码

或者直接在profiles->profile->repositories节点,添加如下子节点:

复制代码
 
<repository>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <layout>default</layout>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <releases>
        <enabled>true</enabled>
    </releases>
</repository>
 
复制代码

 

settings文件的路径

settings.xml的默认路径就:个人目录/.m2/settings.xml

如:

windowns: C:\Users\你的用户名\.m2\settings.xml

linux: /home/你的用户名/.m2/settings.xml

maven依赖包下载失败

比如:Missing artifact org.codehaus.jackson:jackson-mapper-asl:jar:1.9.9
java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

这种问题即使使用Project=>Clean来重新Buil项目都不行,因为这个操作是属于项目重新编译,而该问题是依赖包问题,所以只有在依赖包正常的情况下操作才会成功,解决办法就是maven clean

操作步骤如下:

1.项目右键单击=》Maven=》Update Project

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

2.Update Maven Project,注意取消2项,

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

3.但有时候这样也解决不了问题,因为没有重新下载maven的依赖包,还可以通过编辑保存pom.xml文件来重新下载依赖包。

问题依旧:

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

4.查找到maven本地库中确实有org.codehaus.jackson:jackson-mapper-asl:jar:1.9.9的文件夹,应该是没下载成功导致的,删除该文件夹再执行上面的2中方法就ok了。

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

5.随便编辑pom.xml某处然后保存就可以看到maven console的输出:

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

6.可以看到maven在下载org.codehaus.jackson:jackson-mapper-asl:jar:1.9.9,但是下载还是失败,有可能还是网络原因或者是本身这个版本的jar包就不存在,可以换为其他存在的,比如临近的版本1.9.13或1.9.7

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

版本号尽量要相近,否则差距很大的话,方法内部有很大变动还得修改项目的代码才能兼容版本。

7.如果发现pom.xml没有发现这个依赖包,那应该是其他包有依赖,可以通过Dependency Hierarchy来查找得到,如下图:

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

8,这种情况下,只要在pom.xml强行依赖org.codehaus.jackson:jackson-mapper-asl:jar:1.9.7或org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13即可
java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

9.问题解决

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

java开发者在搭建Maven项目开发中有哪些奇葩的问题?是如何解决的?

### Maven快照包的概念及使用 #### 什么是Maven快照包? Maven中的`SNAPSHOT`版本表示的是开发过程中的不稳定版本,通常用于正在开发的功能模块或者尚未发布的库文件。它的主要作用是在开发阶段频繁更新依赖时提供一种机制来确保开发者能够获取最新版本的依赖而不需要每次都修改`pom.xml`中的版本号[^3]。 #### 快照包的特点 - **动态版本控制**:带有`-SNAPSHOT`后缀的版本会被视为动态版本,在每次构建过程中可能会被重新拉取。 - **自动更新**:Maven会根据配置定期检查并下载最新的快照版本。 - **本地优先原则**:如果本地已经存在某个快照版本,则Maven会在一定时间内不再尝试从远程仓库拉取新的版本[^1]。 #### 配置快照包的方式 在`<dependency>`标签中定义依赖项时,可以通过设置`<version>`属性为`xxx-SNAPSHOT`的形式指定该依赖是一个快照版本: ```xml <dependency> <groupId>com.example</groupId> <artifactId>example-library</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ``` 上述代码片段表明当前项目依赖于`example-library`库的一个未正式发布的版本(即快照版)。此方式适用于任何需要引用尚处于开发状态下的外部组件场景下[^4]。 #### 更新策略调整 默认情况下,Maven并不会持续不断地去请求网络资源以同步所有已知的snapshot类型的构件副本,而是遵循一定的周期来进行刷新操作(比如每天一次). 如果希望立即强制更新所有的snapshots数据源可以执行如下命令: ```bash mvn clean install -U ``` 其中参数-U代表update snapshots,它告诉maven忽略缓存时间戳直接向服务器发起询问是否有更近日期的新制品可用. 另外也可以通过编辑settings.xml文件来自定义全局范围内的行为模式或者是针对特定项目的个性化设定: ```xml <mirrors> ... </mirrors> <snapshots> <!-- 是否启用 --> <enabled>true|false</enabled> <!-- 更新频率 --> <updatePolicy>always | daily | interval:X | never </updatePolicy> <!-- 超时时长 --> <checksumPolicy>warn | fail | ignore</checksumPolicy> </snapshots> ``` 以上XML片断展示了如何精细化管理关于snapshots的各项参数选项,包括但不限于开关状态(update policy),以及遇到校验失败后的处理办法(checksum policy). #### 解决常见问题 当发现尽管依赖配置无误但仍无法正常加载相应class文件的情况发生时,应考虑是否存在以下几种可能性之一: 1. 快照依赖未能成功上传至私有仓库; 2. 当前运行环境下的本地maven并未及时抓取到最新的snapshot版本. 此时可参照前面提到的方法手动触发全量更新流程或是审查相关部署脚本确认其正确性. ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值