maven项目打包慢问题分析&解决

文章讲述了测试人员在使用CI/CD工具时遇到的Maven打包速度问题,主要原因是依赖包从远程repo下载慢。通过分析发现,仓库配置、依赖版本未指定以及网络连接不稳定等因素导致。最终通过指定版本和配置解决,并探讨了可能的优化方法。

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

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下载链接超时,不影响继续打包只是超时的时间太长,还一顿分析搜索从哪里去设置下载超时的时间,还没找到方法

Maven 是一个优秀的构建工具,但是在项目越来越庞大的时候,由于类的数量增多会导致编译速度下降,这是非常常见的问题。造成这个问题的原因主要有两个方面:一是项目本身庞大,包含了大量的类文件,二是依赖库的不断增加,使得 Maven 在执行构建时需要不断下载依赖库,进而增加了编译的时间。 针对这个问题,我们可以从以下几个方面入手来缩短编译时间: 1. 减少依赖的数量 在进行项目开发时,我们经常会依赖一些第三方库。但是这些库的数量过多会直接导致编译时间的增加。因此我们可以通过分析项目的依赖关系,筛选出不必要的库,选择性的进行依赖。另外,对于一些常用的库,我们可以考虑将其打包项目中,避免依赖库的下载。 2. 提升计算机的性能 如果我们的计算机性能过差,也会导致编译速度下降。因此需要将计算机的配置升级,增加内存、CPU等硬件配置,提高系统的运行速度。 3. 使用并发编译 Maven有一个称为并发构建的功能,它可以同时编译多个模块,从而缩短编译时间。需要注意的是,并发构建不适用于所有项目,具体的应用需要结合项目的实际情况和硬件配置来判断。 4. 合理利用缓存 Maven 有一个缓存功能,缓存会在本地机器中保存已经编译过的依赖库,这样在下一次编译时就可以从缓存中调取,而不必重新下载。因此,合理利用缓存会大大提高编译速度。 总之,针对编译问题,我们需要从减少依赖、提升计算机性能、使用并发编译、合理利用缓存等多个方面入手,找到合适的解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值