Maven导入jar包问题解决

  • 1、问题来源
  • 2、问题场景和解决方案
    • 2.1、groupId,artifactId和version依赖有问题
    • 2.2、Maven版本问题
    • 2.3、maven仓库设置问题
    • 2.4、lastUpdated问题
      • 2.4.1、脚本删除lastUpdated
      • 2.4.2、everything删除lastUpdated
  • 3、终极解决方案 : pom system 依赖
  • 4、补充说明(私有jar 无pom依赖情况)

1、问题来源

从git或者svn上拉取了项目,然后as a meven project 后发现文件中有红色无法导入的问题,是不是这种现象经常遇到。

嗯,没有错,这个可能是同事提交的时候没有测试,提交了错误的依赖,也可能是你因为网络原因确实没有拉下来。

在这里总结下可能遇到的几种情况。

2、问题场景和解决方案

2.1、groupId,artifactId和version依赖有问题

可能是依赖包确实有问题。例如多添加了一个字母,版本错误等等。可以使用maven仓库验证下。

验证地址:https://mvnrepository.com/

举个栗子:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version>
</dependency>

打开连接地址,输入poi查询,可以对查询到的结果点击查看。


这个有就可以确认依赖的groupId,artifactId和version是没有问题的。

2.2、Maven版本问题

因为大家使用的Maven版本不同,IDEA对Maven支持的也不同,我这里使用的2018.3版本就无法支持最新的Maven版本。

可以根据IDEA下载的时候支持的那个版本,之后的版本可能是无法支持的。

具体Maven下载地址:https://maven.apache.org/download.cgi

2.3、maven仓库设置问题

我们在开发的时候经常会使用内部封装的一些包,例如一些通用的工具包,假如我们使用了公用的Maven仓库无法拉取到这些包。

一般我们配置开发环境的时候会配置公司的私有库,我们可以打开下载解压的maven配置文件:

maven是免安装的,解压配置即可:
我放在D:/soft下,打开setting文件修改,例如:

<localRepository>D:\mvnrepositories</localRepository>
<servers><server><id>releases</id><username>admin</username><password>admin</password></server><server><id>snapshots</id><username>admin</username><password>admin</password></server>
</servers>
<mirrors><mirror><id>nexus</id><url>http://xx.xx.xx.xx:xx/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
</mirrors>
  • <mirrors></mirrors> 中存放的是maven仓库地址。
  • <servers></servers> 存放的是访问nexus的账号密码。
  • <localRepository></localRepository> 是依赖包本地存放的地址,最好不要放在c盘。

注意: 要把公司的私有库放阿里云上面。

假如刚才公司不知道公司私有库,就去找同事问下。

对于 <mirrors></mirrors> 中的私有库,可以使用前面的http://IP:Port直接浏览器访问,输入<servers></servers> 中的账号密码登录即可。
假如可以访问成功,就证明maven依赖库本地是可以访问公司私有库,也就是网络没啥问题。

2.4、lastUpdated问题

当我们拉取jar包失败的时候,本地库就会生成lastUpdated 文件。
拉取成功的使用可以在本地仓库中查看到jar包。

查看的路径和groupId,artifactId和version有关。通常是 setting 文件中的地址 加上 groupId,artifactId 和 version。

例如fastJson , D:\mvnrepositories + com + alibaba + fastjson + version

拉取失败的情况:

删除lastUpdated 可以挨个查找,假如多个依赖有问题的话,查找删除太麻烦。

也可以全部依赖库删除再重新拉取,但是多次拉取耗费时间过长。

2.4.1、脚本删除lastUpdated

bat脚本删除:

set REPOSITORY_PATH=D:\mvnrepositories
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (del /s /q %%i
)
rem 搜索完毕
pause

新建txt文件,ctrl + v 放入脚本,修改扩展名为 .bat
其中 REPOSITORY_PATH 后的地址是 setting 文件 <localRepository></localRepository> 中的地址。

脚本来自 https://blog.csdn.net/qq_36095679/article/details/97271879,具体细节可以访问查看。

2.4.2、everything删除lastUpdated

推荐软件everything, 下载地址 https://www.voidtools.com/zh-cn/。

安装后可以对lastUpdated 检索,比windows自带检索速度快。


ctrl + A 权限,右键直接删除即可。

删除完成之后再次maven reimport。

使用 IDEA 推荐插件 maven helper 对maven的操作比较友好。
点击项目右键执行:

3、终极解决方案 : pom system 依赖

假如以上的方案都不行怎么办。我们还有终极解决方案 : pom system 依赖。
也是依赖第三方的jar包的方案解决方案:

  1. 项目根目录下创建 lib 放入需要依赖的jar

  1. 修改pom文件

新增 scope 为 system

scope 的依赖传递规则为,其中 system 与 provider 一致 在编译和测试时有效:

修改示例:

<dependency><groupId>com.xx.xx</groupId><artifactId>xx-xx</artifactId><version>15.8.0</version><scope>system</scope><systemPath>${project.basedir}/lib/xx.jar</systemPath>
</dependency>
  1. 把lib 中的jar放入项目依赖libraries

点击 File 选择 Project Structure 修改项目设置:
选择 + ==> Java 找到 项目下jar包,之后添加即可。
增加的时候,可以选择source或者classes,好像两种都可以,这个不太确定。

4. pom文件插件打包配置

以上1-3就可以解决本地无法运行的问题,但是还是无法打包,这个时候就需要在pom文件 builder中配置。

<resources><resource><directory>${project.basedir}/lib</directory><targetPath>/BOOT-INF/lib/</targetPath><includes><include>**/*.jar</include></includes></resource>
</resources>

4、补充说明(私有jar 无pom依赖情况)

关于lastUpdated 问题,也就是无法从私服拉取jar包,可能由于网络原因下载失败,按照原来的访问删除重新拉取即可。

特别注意

也存在一种情况,私服的jar包本身就没有pom文件,所以怎么拉取都会失败!!!!!!

也就导致pom文件依赖再拉取都会不成功!

xxxx-15.8.0.jar
xxxx-15.8.0.jar.lastUpdated
xxxx-15.8.0.jar.sha1
xxxx-15.8.0.pom.lastUpdated

这种情况可以通过 pom system 依赖 进行配置。
在配置 systemPath 时候从项目根路径出发,IDEA 开发会提示路径。
使用 maven 进行打包的时候注意 使用上述 build 进行配置。

<resources><resource><directory>${project.basedir}/lib</directory><targetPath>/BOOT-INF/lib/</targetPath><includes><include>**/*.jar</include></includes></resource>
</resources>

扩展

${project.basedir} 代表项目的路径,以上配置也就是把lib下所有jar 放到 /BOOT-INF/lib 下。

也可以尝试放到resources下,示例:

${project.basedir}/lib 替换为 ${project.basedir}/src/main/resources/lib

打包之后,所有使用到jar包可以传递。

如何判断是否没有pom文件,具体可以解压查看jar包的情况。

Maven导入jar包失败问题,lastUpdated问题解决相关推荐

  1. maven 导入jar包失败编译代码失败解决方案

    现象 假如:auto-build中提示以下信息 Error:java: java.lang.RuntimeException: java.io.IOException: Error reading f ...

  2. maven导入jar包时冲突的解决

    什么是依赖传递 先添加 springmvc 的核心依赖的坐标 <dependencies><dependency><groupId>org.springframew ...

  3. Maven下载jar包失败的原因- 解决方法汇总

    前言 我个人对Maven没有多少研究,仅仅是使用层面,但是有时候在IDEA中配置好Maven,写好pom.xml文件后,经常下载一会就停止了,也就是有些jar包并没有下载成功.我从网上搜了一下,发现大 ...

  4. maven导入jar包步骤

    摘抄地址:http://www.360doc.com/content/17/0705/14/28160904_669065438.shtml 听说maven已近有一段时间了,但是直到今天才搞懂了他的自 ...

  5. 使用maven导入jar包

    我们都经历过自己写代码时有时就要引用一些第三方的jar包,这个我们都会,但在公司里进行团队开发时,是不允许我们自己导入jar包的,是由项目组长之类的统一导入jar包,我们在这里来了解一下这个过程: a ...

  6. 公司内网搭建spring boot maven下载jar包失败的处理方法

    前段时间,部门决定重新搭建新框架,转为现在火热的spring boot.由于之前没有接触过,因此自己在网上找资料学习,学习初期,搭建工程项目时遇到了一个问题:按照教程步骤,在家里成功创建工程,在公司却 ...

  7. maven导入jar包时总是导入到idea自带maven本地仓库

    安装了idea后会有自带的一个maven(.m2文件下). 导入jar包的时候,如果自己安装的maven没有指定本地仓库,那么导入的jar包会导入到idea自带的maven本地仓库中.想要导入到自己安 ...

  8. idea中maven导入jar包

    导入servlet和jsp的jar包 要想在pom.xml中配置一个依赖,必须要知道这个依赖库的坐标:groupId,artifacatId,version 1.可以通过查阅依赖库的资料获取坐标,然后 ...

  9. maven下载jar包, 反复出现lastUpdated文件

    如题, maven无法下载jar包, 并反复出现.lastUpdated结尾文件, 并且在build日志中, 显示 PKIX path building failed: sun.security.pr ...

最新文章

  1. 从支付宝看大用户规模互联网架构发展
  2. 【数据结构与算法】之深入解析“石子游戏”的求解思路与算法示例
  3. python求加速度_如何利用Python 为自然语言处理加速度
  4. java程序默认包含的包是,Java程序默认引用的包是 答案:java.lang包
  5. 加密 web.config
  6. Objective-C 学习笔记1 HelloWorld
  7. Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
  8. 四川信息职业技术学院2019考纲复习
  9. linux下adb工具的安装目录下,adb工具包如何安装?怎么用?
  10. 计算机毕业设计选题推荐 -计算机专业毕业设计题目参考大全
  11. 利用php的GD库封装的海报demo
  12. 神经网络训练样本的标签,训练图像识别神经网络
  13. 计算机 打印 速度慢,处理打印机在打印文件时打印速度过慢的原因
  14. 软件压力测试的手段有注入错误吗,软件错误注入测试技术研究_陈锦富.pdf
  15. Kubernetes HPA 动态弹性扩缩容
  16. gss1_GSS简介:网格样式表
  17. 6 生僻字_蔬菜中的生僻字你知道哪些?
  18. @kubernetes(k8s)pod服务探针(健康检查)及回调钩子HOOK详解
  19. css实现盾牌的动画效果
  20. JaveSE 17 Java基础语法 → 注释奇怪的注释

热门文章

  1. 无法打开虚拟机“Ubuntu”,ubuntu.vmx获得所有权失败
  2. python科学记数法转化格式_将科学记数法转换为F
  3. Memcached完整教程
  4. 跟涛哥一起学嵌入式 26:深入浅出计算机编码、乱码问题
  5. 音频编码分析:AAC、MP3、Opus
  6. 前端团队研发效能提升的探索与实践
  7. 武汉科技大学计算机复试机试,2019年武汉科技大学考研复试及录取工作方案
  8. RedHat7.8安装Microsoft Edge浏览器
  9. [转载]以xilinx为例的低功耗设计
  10. java-net-php-python-ssm巴音学院餐饮安全与卫生防御管理系统计算机毕业设计程序