1. 作为一枚测试人员,这两天因为采购的CI/CD的工具是我这里对接的,被开发反馈说平台打包慢影响开发进度,迫于无奈分析maven打包慢的原因
2. 遇到的问题现象:项目打包时有的时候很快打包成功,有的时候打包很慢;
3. 原因分析:
步骤一:观察发现:打包的时候会去https://repo.maven.apache.org/ 这个地址下载依赖包,这个地址有的时候能连上,有的时候连不上
步骤二:观察发现:有的包会去这个地址下载,有的包又不会去这个地址下载
步骤三:查看maven的setting.xml配置文件,maven配置的mirrors配置,只有我司自己的maven仓库地址,和阿里的这个http://mvn.cloud.alipay.com/nexus/content/groups/public 仓库地址,并没有配置repo的地址
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
步骤四:查看项目中pom.xml,
<distributionManagement>
<repository>
<id>public-releases</id>
<name>Releases Repository</name>
<url>https://maven.aliyun.com/repository/public/</url>
</repository>
<snapshotRepository>
<id>public-snapshots</id>
<name>Snapshot Repository</name>
<url>https://maven.aliyun.com/repository/public/</url>
</snapshotRepository>
</distributionManagement>
步骤五:又找了maven打包的仓库的优先级, 发现优先本地仓库>mirrors仓库>repo中央仓库,本地仓库也mirrors配置的仓库中查看,对应的jar包和文件都存在
步骤六:在搭建的maven私服上又查看了远程仓库配置,均没有配置repo的地方
步骤七:分析打包命令:mvn clean package -Dmaven.test.skip -U ,怀疑是加了-U的原因,把-U去掉后,重新打包,发现还是不行,还是会去repo上下载
步骤八:分析的过程中发现只有几个包才会去repo上下载,然后去代码里面找到依赖这个几个包的地方查看
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>RELEASE</version>
</dependency>
发现这几个依赖的包的方法和其他的不一致,这个地方的版本没有指定版本号,分析可能是因为没有指定的版本号,导致每次打包都要去中央仓库拉最新的 包导致,然后找对应的开发配合调整,将这个版本号具体指定,重新编译,文件已解决
最终历时两天,排查完成
最后,遗留的问题,还是很奇怪为啥会去repo的地址上拉,查找相关的文档发现,maven的配置文件 解压~/maven3/lib/maven-settings-builder-3.2.5.jar包,发现org/apache/maven/model/pom-4.0.0.xml文件中配置了
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
网上搜到的解决方法:可以删掉,也可以将地址改为自有的仓库:---方法验证中
PS:分析的过程中还发现,去repo下载链接超时,不影响继续打包只是超时的时间太长,还一顿分析搜索从哪里去设置下载超时的时间,还没找到方法