Maven插件—04、复制清理能力maven-antrun-plugin

文章目录

前言

博主介绍:✌目前全网粉丝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包,仅保留当前分支构建的版本。

设计要点

  1. 绑定到package阶段,确保JAR包已生成
  2. 使用动态属性:项目名、版本号、分支名
  3. 文件名格式:{jar.name}--{git.branch}.jar
  4. 删除规则:保留当前分支版本,删除其他版本

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包改名字:

资料获取

大家点赞、收藏、关注、评论啦~

精彩专栏推荐订阅:在下方专栏👇🏻

更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅

相关推荐
Ronin30516 天前
日志打印和实用 Helper 工具
数据库·sqlite·rabbitmq·文件操作·uuid生成
_OP_CHEN1 个月前
【从零开始的Qt开发指南】(十九)Qt 文件操作:从 I/O 设备到文件信息,一站式掌握跨平台文件处理
开发语言·c++·qt·前端开发·文件操作·gui开发·qt文件
故事不长丨1 个月前
C#File文件操作全解析:从基础用法到异常处理
服务器·开发语言·visualstudio·c#·文件操作·io流·file
小灰灰搞电子2 个月前
C++ 文件操作详解
开发语言·c++·文件操作
十五年专注C++开发2 个月前
标准C++操作文件方法总结
开发语言·c++·文件操作·ifstream
tianyuanwo2 个月前
基于工程分支的组件版本号策略:实现可控修复与主分支平滑升级
rpm·git分支管理·os 源码管理·工程分支
列逍2 个月前
Linux文件(一)
linux·文件操作·write·read·重定向·open·文件描述符
_OP_CHEN2 个月前
【Git原理与使用】(三)Git 分支管理终极指南:从基础操作到企业级实战,解锁高效协作密码
linux·运维·git·git分支管理·企业级组件·企业协作
那我掉的头发算什么2 个月前
【javaEE】文件&IO--文件内容操作
java·java-ee·文件·文件操作