Maven下载失败企业私服篇

同期文章:Maven玄学做法系列 - 掘金 (juejin.cn)

Maven在开发者日常工作中不可或缺,最重要的是帮助开发者快速搭建项目框架,管理项目的依赖关系。之前用到的都是阿里云的maven公共库,现在进入到企业的私服中,一些经验就有些水土不服。

因此写一篇文章给各位在企业级开发遇到Maven相关问题时一些解决问题的参考。

一、maven下载包失败

正常的maven依赖下载失败,我是有一套玄学做法系列的,只要做法完毕,99.99%的依赖都能迎刃而解。但是在企业私服开发环境中,一些问题确实做法完毕也不太管用。

报错原文:

Could not transfer artifact 马赛克:pom:1.4.5 from/to nexus (马赛克): Certificate for <马赛克> doesn't match any of the subject alternative names:[*.马赛克.com, *.马赛克.com.cn, 马赛克.com]

进入私服可以发现,依赖包是存在的。

所以问题出现在网络连接上,办公网是可以正常联通的。问题出在了Certificate,也就是SSL证书上。

如图,我们的私服没有配置SSL证书,而IDEA默认认为这些连接不安全,所以拒绝了连接。之前一直使用阿里云的私服,而阿里云是配置了SSL证书的。所以这个问题一般出现在企业内部自建私服上。

解决方案简单粗暴,就是配置忽略这些证书校验。

解决方案

在自动下载时忽略证书校验

js 复制代码
-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true

在插件自动忽略证书校验

此处写入以下参数

js 复制代码
-Dmaven.wagon.http.ssl.insecure=true 
-Dmaven.wagon.http.ssl.allowall=true 
-Dmaven.wagon.http.ssl.ignore.validity.dates=true

二、本地仓库有依赖包但是依然爆红

如图所见,IDEA的maven依赖爆红

但是检查本地仓库中确实存在这个包

这个情况比较诡异,项目实际运行不受影响,刷新缓存后依赖仍然爆红。

这是因为文件夹中尽管有有效文件,但是也存在后缀为.lastUpdated的文件,导致IDEA依赖解析BUG。很可能是办公网波动时才出现这样两个文件一起存在的情形。

所以解决方案就是删除.lastUpdated文件(失败的jar包)。因为可能涉及的文件比较多,所以贴出个自动操作脚本删除仓库中后缀为lastUpdated的文件。

  1. windows操作bat脚本
bash 复制代码
set REPOSITORY_PATH=D:\software\Java\maven\repository
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
pause
  1. mac操作脚本
bash 复制代码
#!/bin/bash
REPOSITORY_PATH="/Users/****/Documents/maven"
find "$REPOSITORY_PATH" -type f -name "*lastUpdated*" -exec rm -rf {} \;
read -p "Press any key to continue..."

三、maven插件下载问题

因为旧版本的IDEA体验太差,我更新了最新版的。

根据更新必出问题定理,我的一些项目中maven所有的插件都爆红,我观察了下插件版本比较新的才会爆红,所以我个人认为是公司的私服里面没有同步新版本的插件。(我真傻,真的,其实同事都没出问题,我还把锅甩在了自家公司的私服上)

然后根据这一猜测,我在settings文件增加阿里云的镜像仓库,问题解决了,我还吐槽了下。

其实这个问题是和第一个问题是一样的,公司私服没有SSL证书,阿里云有而已。误打误撞让我解决了问题。

四、打包问题

在个人项目的开发中很少会有打包的需求,一般在企业级项目中才会出现。于是有那么一天,我打包出现了问题,就非常懵逼。

报错原文如下:

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project **** : Failed to retrieve remote metadata **** : Could not transfer metadata **** from/to nexus-snapshots (http://10.*.*.*:*/nexus/content/repositories/snapshots): Transfer failed for http://10.*.*.*:*/nexus/content/repositories/snapshots/****/
从报错内容来看,是网络连接问题。我还以为是私服网站出现了问题,后来经过排查不是私服的问题。

然后,同事就给我指出了我的一个盲点,那个连接地址。很明显,这是一个10.开头的地址。(代表着是一个生产服务器,办公网是连不上的)所以关注点除了报错原因还有我们连接的私服地址。

由此在父pom中找到了其配置。并在项目中覆盖了配置。

java 复制代码
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://172.****/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://172.****/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>
相关推荐
电商API_1800790524722 分钟前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序36 分钟前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹38 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_9498095942 分钟前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813301 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计
2601_949868361 小时前
Flutter for OpenHarmony 电子合同签署App实战 - 已签合同实现
java·开发语言·flutter
达文汐2 小时前
【困难】力扣算法题解析LeetCode332:重新安排行程
java·数据结构·经验分享·算法·leetcode·力扣
培风图南以星河揽胜2 小时前
Java版LeetCode热题100之零钱兑换:动态规划经典问题深度解析
java·leetcode·动态规划
启山智软2 小时前
【中大企业选择源码部署商城系统】
java·spring·商城开发
我真的是大笨蛋2 小时前
深度解析InnoDB如何保障Buffer与磁盘数据一致性
java·数据库·sql·mysql·性能优化