maven构建加速器Maven Build Cache Extension

背景

成熟的ci工具都是将源码编译成jar/war包。由于开发人员在hotfix时实际对代码的改动量不大,甚至是1行代码,但是在大仓的场景下,整个构建时间会超过3分钟。因此Maven Build Cache Extension是一个非常好用的构建缓存插件。

需求

  • host nexus3的row格式的host制品库:每次构建会先将代码与nexus的archive进行比对,无增量构建就直接拿archive的缓存数据,有增量构建,那么就执行对应模块的构建任务

优点

  1. 增量构建只针对修改代码的部分
  2. 避免重复的代码生成工作

操作步骤

1.在根目录新增.mvn文件夹,文件夹下存放extensions.xml(1.1.0以前的版本会存在target下没有产物的bug)和maven-build-cache-config.xml。

  • maven-build-cache-config.xml中的<remote>的id需要与maven settings中配的servers一致
  • maven-build-cache-config.xml中的<url>替换成自己的nexus3地址
<?xml version="1.0" encoding="UTF-8"?>
<extensions>
    <extension>
        <groupId>org.apache.maven.extensions</groupId>
        <artifactId>maven-build-cache-extension</artifactId>
        <version>1.2.0</version>
    </extension>
</extensions>
<?xml version="1.0" encoding="UTF-8"?>
<cache xmlns="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/BUILD-CACHE-CONFIG/1.0.0 https://maven.apache.org/xsd/build-cache-config-1.0.0.xsd">
  <configuration>
    <enabled>true</enabled>
    <remote enabled="true" id="remote-cache" saveToRemote="true">
      <url>https://${younexus3 domain}/repository/maven-build-cache</url>
    </remote>
  </configuration>
  <input>
    <global>
      <!--  If not defined, default glob is "*"  -->
      <glob> {*.java,*.groovy,*.yaml,*.svcd,*.proto,*assembly.xml,assembly*.xml,*logback.xml,*.vm,*.ini,*.jks,*.properties,*.sh,*.bat} </glob>
      <includes>
        <!--  By default, project sources and resources directories are included (src/main/java and src/main/resources)  -->
        <!--  In this example, the goal is to include a wider range of src directories (like src/main/assembly or src/main/groovy)  -->
        <include>src/</include>
        <include>target/generated-sources/protobuf/java/</include>
      </includes>
      <excludes>
        <!--  We don't want a static "hash" pom resolution (it would conflict the will to adjust the version in the manifest),  -->
        <!--  we exclude this specific file (as it is already by default since it is not in an include folder  -->
        <!--  The need to rebuild a project based on the pom is already computed with some intelligence by the extension.  -->
        <exclude>pom.xml</exclude>
        <!--  Also excluding everything located in this project specific folder  -->
        <exclude>src/main/javagen/**</exclude>
      </excludes>
    </global>
  </input>
</cache>

2.配置~/.m2/settings.xml

<settings>  
  <!--  other configs  -->
  <servers>
        <server>
            <id>remote-cache</id>
            <username>nexus3-username</username>
            <password>nexus3-password</password>
        </server>
  </servers>
</settings>  

3.在ci工具执行mvn install后面加参数

mvn clean install -Dmaven.build.cache.remote.save.enabled=true

结论

在命中缓存的情况下,基本上几秒钟完成一个模块的构建。

参考文档:

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当Docker build Maven构建失败时,可能有几个原因。首先,确保您已正确配置和安装了Docker以及Maven插件。确保您使用的是正确版本的docker-maven-plugin并且已正确配置。您可以检查插件的文档或示例配置文件来确保您的配置正确。 其次,检查您的项目是否有任何依赖项或配置问题。确保项目的pom.xml文件中包含正确的依赖项和插件配置。如果有任何错误或缺少配置,可能会导致构建失败。 此外,检查您的网络连接是否正常。如果您的构建过程需要从远程仓库下载依赖项或镜像,网络连接问题可能会导致构建失败。确保您的网络连接稳定,并且可以访问所需的依赖项和镜像。 最后,查看构建过程的日志和错误信息,以了解具体的错误原因。根据错误信息,您可以采取相应的措施来解决问题。可能需要检查构建环境,升级插件版本,修复配置问题或解决依赖项问题。 总结来说,当Docker build Maven构建失败时,您应该检查Docker和Maven插件的配置,确保项目的依赖项和插件配置正确,检查网络连接是否正常,并查看构建日志和错误信息以了解具体的错误原因。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [dockerbuild-maven-plugin:使用 docker 容器构建 java 项目的 Maven 插件](https://download.csdn.net/download/weixin_42166623/20419254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [docker-maven-plugin](https://download.csdn.net/download/weixin_42106357/19950707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot-multi-module-v2:docker部署maven构建多模块springboot项目](https://download.csdn.net/download/weixin_42157567/15601621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值