maven-jar-plugin maven打包插件笔记

文章目录

      • 配置示例
    • 其他
      • 官网文档
      • 问题
      • maven打包插件是如何和打包动作关联在一起的?
      • 配置文件中 goal是必须的吗?

maven自定义插件内容很多,也不易理解,这里把maven打包插件单拿出来,作为入口试着理解下。

配置示例

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.2</version><configuration><!--要使用的打包配置.--><archive><!-- 创建的归档文件是否包含以下pom.xml 和pom.properties Maven 文件,默认是true --><addMavenDescriptor>true</addMavenDescriptor><!-- 生成MANIFEST.MF的设置 --><manifest><!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 --><addClasspath>true</addClasspath><!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个jar本身和依赖包在同一级目录,则不需要添加 --><classpathPrefix>lib/</classpathPrefix><!-- jar启动入口类 --><mainClass>com.example.demo.DemoApplication</mainClass></manifest><manifestEntries><!-- 在Class-Path下添加配置文件的路径 --><!--<Class-Path>../config/</Class-Path>--></manifestEntries></archive><!-- jar包的位置,其中${project.build.directory}默认为 target/ --><outputDirectory>${project.build.directory}</outputDirectory><!--过滤掉不希望包含在jar中的文件--><excludes><exclude>${project.basedir}/xml/*</exclude></excludes><!--要包含的文件列表--><includes><!-- 打jar包时,打包class文件和config目录下面的 properties文件 --><!-- 有时候可能需要一些其他文件,这边可以配置,包括剔除的文件等等 --><include>**/*.class</include><include>**/*.properties</include></includes></configuration>
</plugin>

如上标签就是打包插件自定义的。其他的如等都是maven基础标签。

所有标签中的内容,都是用@Parameter注入的,如果必填,加上 required = true。

@Parameter(defaultValue = "${project.build.outputDirectory}", required = true)private File classesDirectory;

其他

官网文档

apache打包插件官网地址:
https://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html

github地址:
https://github.com/apache/maven-jar-plugin.git

问题

maven打包插件是如何和打包动作关联在一起的?

创建类的时候就定义了。 defaultPhase = LifecyclePhase.PACKAGE 这一行就是。

@Mojo(name = "jar",defaultPhase = LifecyclePhase.PACKAGE,requiresProject = true,threadSafe = true,requiresDependencyResolution = ResolutionScope.RUNTIME)
public class JarMojo extends AbstractJarMojo {}

配置文件中 goal是必须的吗?

想要解答这个问题,先要知道控制执行有几种方式。

两种:
1、 @Mojo注解中defaultPhase设置默认phase(阶段)。
2、配置文件中指定。
如:

<plugin><groupId>com.example</groupId><artifactId>my-plugin</artifactId><version>1.0.0</version><executions><!-- 在compile阶段执行插件的goal-1目标 --><execution><id>execution-1</id><phase>compile</phase><goals><goal>goal-1</goal></goals></execution><!-- 在install阶段执行插件的goal-2和goal-3目标 --><execution><id>execution-2</id><phase>install</phase><goals><goal>goal-2</goal><goal>goal-3</goal></goals></execution></executions>
</plugin>

这样也实现了goal和phase的绑定。

那么另外一个问题也迎刃而解,maven自定义插件可以有多个goal(mojo)吗?
当然可以,参考maven-install-plugin,有两个mojo:install和install-file。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04禁止自动休眠的几种方式

在Ubuntu 20.04中&#xff0c;您可以通过以下几种方式禁用自动休眠功能&#xff1a; 使用systemd设置: sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 修改/etc/systemd/logind.conf文件: sudo nano /etc/systemd/logind.conf 找…

番外篇 | 基于YOLOv5-RCS的明火烟雾检测 | 源于RCS-YOLO

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文就给大家详细介绍如何将RCS-YOLO…

<Linux> 基础IO

文章目录 基础IO文件描述符重定向重定向本质重定向系统调用 基础IO 文件描述符 系统底层提供打开文件(open)&#xff0c;读(read)&#xff0c;写(write)&#xff0c;关闭文件(close)的系统调用&#xff0c;如果想详细了解可以复制以下命令仔细阅读使用方法&#xff0c;这里不…

C++程序编译 错误提示和评测状态

编译常见错误提示 1.[Error] expected ; before cout。在cout前面&#xff0c;缺少一个分号。 2.[Error] arr was not declared in this scope。未定义变量名arr。 3.[Error] ld returned 1 exit status。重复运行错误(上一个运行的程序&#xff0c;输入窗口没有关掉)。 或者…

如何解决windows自动更新,释放C盘更新内存

第一步&#xff1a;首先关闭windows自动更新组件 没有更新windows需求&#xff0c;为了防止windows自动更新&#xff0c;挤占C盘空间&#xff0c;所以我们要采取停止Windows Update服务。按下WinR打开运行对话框&#xff0c;输入services.msc&#xff0c; 然后按Enter。在服务…

24上软考成绩预计6月底公布?附查分指南

最近&#xff0c;很多小伙伴都在问上半年成绩什么时候出来&#xff1f;每天学习群变成了祈祷群&#xff0c;都在祈祷45,45,45。按照上一次的成绩发布时间&#xff0c;从考试结束到成绩发布&#xff0c;间隔了32天。这次是不是会更快&#xff1f; 一般阅卷只要7-10天&#xff0c…

vb.net教程

下载地址&#xff1a;https://download.csdn.net/download/wgxds/89462547

内核模块的各种概念及示例

基本概念 (1)模块本身不被编译入内核映像&#xff0c;从而控制了内核镜像的大小。模块一旦insmod&#xff0c;它就和内核中的其他部分完全一样 (2)内核中已加载模块的信息也存在于/sys/module目录下&#xff1b;内核中将包含/sys/module/test_mod目录 (3)modprobe在加载某模…

系统架构设计师 - 数据库系统(1)

数据库系统 数据库系统数据库模式 ★分布式数据库 ★★★数据库设计阶段 ★★ER模型 ★关系模型 ★ ★结构约束条件完整性约束 关系代数 ★ ★ ★ ★概述自然连接 大家好呀&#xff01;我是小笙&#xff0c;本章我主要分享系统架构设计师 - 数据库系统(1)知识&#xff0c;希望内…

2024-06-20力扣每日一题

链接&#xff1a; 2748. 美丽下标对的数目 **废话&#xff1a;**彩笔做题家回归&#xff0c;要开始找工作噜 题意 在数组里&#xff0c;按i<j规则取两个数字nums[i]和nums[j]&#xff0c;只要nums[i]的第一位数字和nums[j]的最后一位数字互质&#xff0c;则结果加一 解…

RX8025/INS5T8025实时时钟-国产兼容RS4TC8025

该模块是一个符合I2C总线接口的实时时钟&#xff0c;包括一个32.768 kHz的DTCXO。 除了提供日历&#xff08;年、月、日、日、时、分、秒&#xff09;功能和时钟计数器功能外&#xff0c;该模块还提供了大量其他功能&#xff0c;包括报警功能、唤醒定时器功能、时间更新中断功能…

访问控制列表(Access Control Lists,ACL)与哈希查找的爱恨情怨

访问控制列表&#xff08;Access Control Lists&#xff0c;ACL&#xff09;与哈希查找 什么是访问控制列表ACL&#xff1f;直接说ACL是干啥的ACL概念为什么需要ACLACL类型ACL匹配机制使用例子 哈希查找什么是哈希查找&#xff1f;哈希查找的基本原理哈希查找的步骤 哈希查找在…

H3C防火墙抓包(命令行)

命令行 请按照如下步骤收集下设备的debug信息 1&#xff09; 创建一个空ACL 3XXX&#xff0c;写上两条明细rule&#xff0c;分别对应来回流量的源目地址 [FW]acl advanced 3XXX [FW-acl-ipv4-adv-3XXX]rule permit ip source x.x.x.x 0 destination y.y.y.y 0 [FW-acl…

js如何实现开屏弹窗

开屏弹窗是什么&#xff0c;其实就是第一次登录后进入页面给你的一种公告提示&#xff0c;此后再回到当前这个页面时弹窗是不会再出现的。也就是说这个弹窗只会出现一次。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>…

【绝对有用】C++ vector const函数和右值移动

std::vector 是 C 标准库中的动态数组&#xff0c;提供了许多方便的函数来操作数组。以下是 std::vector 的常用函数及其使用方法&#xff1a; 构造函数 vector()&#xff1a;默认构造函数&#xff0c;创建一个空的 vector。vector(size_t n)&#xff1a;创建一个包含 n 个默…

索引和深分页优化案例

一、初始状态没加索引 总数据100w左右 浅分页 查询10条需要1.5s左右 select * from timer_task where app hzhXtimer order by run_timer limit 0,10深分页查询10条需要1.7s左右 select * from timer_task where app hzhXtimer order by run_timer limit 100000,10看执…

视频采集概念

视频采集通常指的是将视频信号从视频源&#xff08;如摄像头、视频播放器等&#xff09;捕获并转换为数字格式&#xff0c;以便于计算机处理和存储。 步骤&#xff1a; 视频信号捕获&#xff1a;通过摄像头、网络摄像头、视频采集卡等设备将视频信号捕获。 信号转换&#xff…

【diffusers极速入门(三)】生成的图像尺寸与 UNet 和 VAE 之间的关系

先上结论&#xff0c;一句话总结即&#xff1a; SD 图片的输入\输出尺寸&#xff08;高或宽&#xff09; Unet 输入\输出的样本尺寸&#xff08;高或宽&#xff09; x VAE 的缩放尺寸 在使用生成模型时&#xff0c;特别是图像生成任务中&#xff0c;理解 UNet 和 VAE&#xf…

【CPP】选择排序:冒泡排序、快速排序

目录 1.冒泡排序简介代码分析 2.快速排序2.1霍尔版本简介代码分析 2.2挖坑版本2.3前后指针版本2.4非递归的快排思路代码 什么是交换排序&#xff1f; 基本思想&#xff1a;所谓 交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0…

[BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…