文章目录

前言
博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。
涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。
博主所有博客文件目录索引:博客目录索引(持续更新)
CSDN搜索:长路
视频平台:b站-Coder长路
一、认识maven-antrun-plugin
1.1、介绍
maven-antrun-plugin是Maven官方提供的一个插件,允许在Maven构建过程中嵌入并执行Apache Ant任务。简单来说,它就像一座桥梁,让Maven项目能够使用Ant强大的文件操作能力。
1.2、核心能力
| 功能 | 说明 |
|---|---|
| 执行Ant任务 | 在Maven构建生命周期中运行Ant脚本 |
| 文件操作 | 复制、移动、删除、重命名文件或目录 |
| 系统命令执行 | 调用外部命令(如git、shell脚本) |
| 生命周期集成 | 可绑定到Maven的任意构建阶段 |
1.3、工作原理
maven-antrun-plugin通过<target>标签定义Ant任务,这些任务会在指定的Maven生命周期阶段(如package、compile)自动执行。插件内部使用Ant引擎解析并执行这些任务,实现与Maven构建的无缝集成。
二、实现场景及使用方式
2.1、打包复制能力
2.1.1、场景描述
在每个模块打包完成后,自动将生成的JAR包复制到统一的pluginLibs目录,并清理该模块的旧版本JAR包,仅保留当前分支构建的版本。
设计要点:
- 绑定到
package阶段,确保JAR包已生成 - 使用动态属性:项目名、版本号、分支名
- 文件名格式:
{jar.name}--{git.branch}.jar - 删除规则:保留当前分支版本,删除其他版本
2.1.2、实现复制拷贝能力
1)使用${git.branch}这个参数可通过插件配置获取到
xml
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.6</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<configuration>
<dateFormat>yyyy.MM.dd HH:mm:ss</dateFormat>
<verbose>true</verbose>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<gitDescribe>
<always>false</always>
<dirty>-dirty</dirty>
<forceLongFormat>false</forceLongFormat>
</gitDescribe>
</configuration>
</plugin>
2)基于maven-anturn-plugin来实现复制功能
xml
<properties>
<jar.package.name>zookeeper</jar.package.name>
<jar.name>zookeeper</jar.name>
</properties>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- 绑定到package阶段,此时JAR包已生成 -->
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<!-- 步骤1:复制当前JAR包到目标目录,并重命名 -->
<copy file="${basedir}/target/${project.name}-${revision}.jar"
tofile="${basedir}/../pluginLibs/${jar.package.name}/${jar.name}--${git.branch}.jar" />
<!-- 步骤2:清理旧版本JAR包,保留当前分支版本 -->
<delete>
<fileset dir="${basedir}/../pluginLibs/${jar.package.name}/"
includes="${jar.name}-*.jar"
excludes="${jar.name}--${git.branch}.jar"/>
</delete>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
效果如下
会自动的拷贝到指定的目录下将相应的jar包改名字:
。
资料获取
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅:在下方专栏👇🏻
- 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
- 开源项目Studio-Vue---校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
- 学习与生活-专栏:可以了解博主的学习历程
- 算法专栏:算法收录
更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅