Maven快速上手使用指南的笔记
-
Maven Mini Guides
-
Configuring for Reproducible Builds
使用Maven实现重复构建。
检查当前使用的插件的版本。mvn artifact:check-buildplan
修改
pom.xml
,增加如下配置,显式指定project.build.outputTimestamp
的取值:<properties><project.build.outputTimestamp>2023-01-01T00:00:00Z</project.build.outputTimestamp></properties>
执行完整构建,执行如下命令:
mvn clean install
再次执行构建,同时比较二进制是否一致,执行如下命令:
mvn clean verify artifact:compare
-
Guide to creating assemblies
使用maven-assembly-plugin
,可以指定构建目标文件的文件布局和格式。
修改项目的pom.xml
,增加插件的配置,内容样例如下:<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><descriptors><descriptor>src/assembly/dep.xml</descriptor></descriptors></configuration><executions><execution><id>create-archive</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>
在项目路径
${project.basedir}/src/assembly
下放置布局文件,以上述配置为例,布局文件为dep.xml
,内容样例,如下:<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"><id>bin</id><formats><format>tar.gz</format><format>tar.bz2</format><format>zip</format></formats><fileSets><fileSet><directory>${project.basedir}</directory><outputDirectory>/</outputDirectory><includes><include>README*</include><include>LICENSE*</include><include>NOTICE*</include></includes></fileSet><fileSet><directory>${project.build.directory}</directory><outputDirectory>/</outputDirectory><includes><include>*.jar</include></includes></fileSet><fileSet><directory>${project.build.directory}/site</directory><outputDirectory>docs</outputDirectory></fileSet></fileSets> </assembly>
执行构建,命令如下,即可观察效果。
mvn package
-
Guide to Configuring Archive Plugins
对于常规的jar
/war
/ejb
/ear
/assembly
插件,默认情况下,在构建结果文件中增加目录META-INF/maven
,包含文件pom.xml
和pom.properties
。
通过修改archive
的配置,可以关闭前述默认行为,样例如下:<project>...<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><archive><addMavenDescriptor>false</addMavenDescriptor></archive></configuration></plugin></plugins></build>... </project>
-
Configuring Maven
常见的配置,比如:- 本地仓库的路径。
- 通过代理,下载依赖软件。
- 下载依赖软件时的并行度。
- 上传构建目标文件时,增加安全性。
- 远程仓库的配置,比如镜像。
- 构建场景的配置。
- 构建工具链的配置。
-
Guide to generating sources
对于参与generate-sources
阶段的插件,构建时会自动生成代码,如下是插件antlr4-maven-plugin
的样例配置:<project>...<build><plugins><plugin><groupId>org.antlr</groupId><artifactId>antlr4-maven-plugin</artifactId><version>4.5.3</version><executions><execution><id>antlr</id><goals><goal>antlr4</goal></goals></execution></executions></plugin></plugins></build>... </project>
插件生成的代码,可参与后续的
compile
阶段。 -
Guide to Working with Manifests
可参考Apache Maven Archiver -
Guide to Maven Classloading
Maven工具在运行过程中涉及到的类加载器,以及各自的用途。 -
Guide to Working with Multiple Modules
对于多个模块组成的项目,Maven 3.X版本的工作流程。 -
Guide to Working with Multiple Modules in Maven 4
对于多个模块组成的项目,Maven 4.X版本的工作流程。 -
Releasing
目前在项目中没有使用过。 -
Guide to using Ant with Maven
借助于插件maven-antrun-plugin
,在构建过程中,可以定制shell脚本,定制构建行为。
如下是样例,在generate-sources
阶段调用脚本${project.basedir}/src/main/sh/do-something.sh
:<project><modelVersion>4.0.0</modelVersion><artifactId>my-test-app</artifactId><groupId>my-test-group</groupId><version>1.0-SNAPSHOT</version><build><plugins><plugin><artifactId>maven-antrun-plugin</artifactId><version>1.7</version><executions><execution><phase>generate-sources</phase><configuration><tasks><execdir="${project.basedir}"executable="${project.basedir}/src/main/sh/do-something.sh"failonerror="true"><arg line="arg1 arg2 arg3 arg4" /></exec></tasks></configuration><goals><goal>run</goal></goals></execution></executions></plugin></plugins></build> </project>
-
Guide to using Modello
Modello的介绍,如下:- 文档
- 样例
在项目中没有使用过。
-
Using Extensions
自定义扩展,修改Maven的行为。 -
Building For Different Environments
利用profile,针对不同的构建场景,比如可定义不同的插件和参数。 -
Guide to Using Toolchains
构建项目时,通过使用Toolchains,构建项目时使用不同于运行Maven的JDK等。
相关文章:

Maven快速上手使用指南的笔记
Maven Mini Guides Configuring for Reproducible Builds 使用Maven实现重复构建。 检查当前使用的插件的版本。 mvn artifact:check-buildplan修改pom.xml,增加如下配置,显式指定project.build.outputTimestamp的取值: <properties>…...

MySQL面试题大全和详解,含SQL例子
若有不理解,可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 下面是一些常见的 MySQL 面试题及其解答,包含 SQL 示例。 1. 什么是 MySQL? 答&…...

java-redis-雪崩
Redis 雪崩问题 Redis雪崩 是指在 Redis 缓存系统中,当大量缓存同时失效时,所有请求直接打到数据库,导致数据库瞬间压力激增,甚至崩溃的现象。雪崩问题通常出现在高并发的系统中,因为缓存的失效导致后端数据库承受不了…...

如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐
《使命召唤4:现代战争》(Call of Duty 4: Modern Warfare)是由Infinity Ward开发并于2007年发行的第一人称射击游戏。该游戏是《使命召唤》系列的第四部作品,是一款非常受欢迎的游戏之一,《使命召唤4:现代战…...

SimHash算法详解与应用
1. 简介 在当今信息爆炸的时代,如何有效地管理和处理海量的文本数据,尤其是去除重复内容,是一项重要的任务。SimHash 是一种巧妙的哈希算法,它不仅能快速生成文本的哈希值,还能在不同文本之间生成相似的哈希值&#x…...

RasberryPi 3B树莓派基本配置
RaspberryPi 3B树莓派基本配置 文章目录 RaspberryPi 3B树莓派基本配置一、准备工作1.1 硬件准备:1.1.1 树莓派和电源适配器:1.1.2 USB转TTL模块:1.1.3 读卡器和TF卡: 1.2 软件准备:1.2.1 下载 Raspberry Pi OS&#x…...

Docker编译环境的使用(ubuntu)
目录 Ubuntu安装docker 重启docker 拉取镜像 进入docker安装软件 提交docker 添加用户到docker组 进入docker 添加build用户 停止容器 保存docker镜像 load镜像 删除容器 Ubuntu安装docker sudo apt install docker.io 国内可用的源 Welcome to nginx! (tence…...

认知杂谈53
今天分享 有人说的一段争议性的话 I I 1.自助者天助 首先呢,咱得好好琢磨琢磨“自助者天助”这句话。这话说起来好像有点高深莫测的感觉,其实啊,道理特别简单。 就是说要是你自己都不乐意努力,那老天爷也不会平白无故地来帮你…...

量子计算信息安全威胁与应对策略分析
作者简介 赖俊森 中国信息通信研究院技术与标准研究所光网络技术与应用研究部主任工程师,正高级工程师,主要研究方向为量子信息、量子通信、量子计算等。 赵文玉 中国信息通信研究院技术与标准研究所副所长,正高级工程师,主要…...

Oracle(112)如何使用RMAN恢复数据库?
使用 RMAN(Recovery Manager)恢复 Oracle 数据库是确保数据在灾难情况下能够得到恢复的关键步骤。以下是详细的指导和代码示例,展示如何使用 RMAN 进行数据库恢复。 1. 准备工作 在开始恢复之前,需要确保以下几点: …...

I2C通信协议
简介 I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线,由两根通信线:SCL(Serial Clock)和SDA(Serial Data)组成。是一种同步、半双工带数据应答的通信协议,支持…...

使用Python实现智能信用评分系统
1. 项目简介 本教程将带你一步步实现一个智能信用评分系统。我们将使用Python和一些常用的深度学习库,如TensorFlow和Keras。最终,我们将实现一个可以预测信用评分的模型。2. 环境准备 首先,你需要安装以下库: TensorFlowKeraspandasnumpyscikit-learn你可以使用以下命令…...

RocketMQ之发送消息源码分析
RocketMQ之send()源码分析 一、代码序列图 二、关键步骤分析 1、向namesrv拉取队列信息 2、选择目标队列 3、向broker发送消息 三、代码学习 1、代码结构 (设计模式) 2、工具类和方法...

使用宝塔面板安装mrdoc
使用宝塔面板安装mrdoc 1、所需环境2、ubuntu系统安装3、宝塔面板安装4、NginxPHPMySQL安装5、python项目管理器安装6、 python版本安装7、mrdoc的部署7.1、下载项目源码7.2、新建python管理器项目 8、使用MySQL作为默认数据库8.1、安装mysqlclient插件8.2、配置数据库连接信息…...

C++操作符重载实例
C操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3c1c2时,也就是计算x3x1x2,y3y1y2,以下是C代码: #include <iostream> using namespace std;class CVector{public:int x,y;CVector(){} ; …...

Linux高效进程控制的实战技巧
Linux高效进程控制的实战技巧 Linux是一种开源的Unix-like操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。Linux以其稳定性、安全性和灵活性而著称,广泛应用于服务器、桌面、嵌入式系统等多个领域。在Linux系统编…...

使用条件变量实现线程同步:C++实战指南
使用条件变量实现线程同步:C实战指南 在多线程编程中,线程同步是确保程序正确性和稳定性的关键。条件变量(condition variable)是一种强大的同步原语,用于在线程之间进行协调,避免数据竞争和死锁。本文将详…...

Spark2.x 入门: KMeans 聚类算法
一 KMeans简介 KMeans 是一个迭代求解的聚类算法,其属于 划分(Partitioning) 型的聚类方法,即首先创建K个划分,然后迭代地将样本从一个划分转移到另一个划分来改善最终聚类的质量。 ML包下的KMeans方法位于org.apach…...

如何快速练习键盘盲打
盲打是指在不看键盘的情况下进行打字,这样可以显著提高打字速度和效率。以下是一些练习盲打的方法: 熟悉键盘布局:首先,你需要熟悉键盘上的字母和符号的位置。可以通过键盘图或者键盘贴纸来帮助记忆。 使用在线打字练习工具&…...

Flask中实现WebSocket需要什么组件
在Flask中实现WebSocket功能,通常不会直接使用Flask本身,因为Flask是一个轻量级的Web框架,主要设计用于处理HTTP请求。然而,你可以通过集成一些第三方库来在Flask应用中支持WebSocket。WebSocket是一种在单个TCP连接上进行全双工通…...

java8 Stream流详解
前言 Java 8引入了一种新的处理集合的方式——Stream API。它提供了一种高级迭代方式,支持函数式编程风格,使得集合操作更加简洁、清晰。本文将详细介绍Java 8 Stream API的核心概念、操作和使用技巧。 Stream API 简介 Stream API是Java 8中的一大亮…...

通信工程学习:什么是AB地址总线、DB数据总线、CD控制总线
AB地址总线、DB数据总线、CD控制总线 在计算机体系结构中,总线(Bus)是一种用于在计算机内部各个组件之间传输信息的物理通道。其中,AB地址总线、DB数据总线和CD控制总线是计算机总线系统中非常重要的三个组成部分,它们…...

CP AUTOSAR标准之EthernetInterface(AUTOSAR_SWS_EthernetInterface)(更新中……)
1 简介和功能概述 该规范指定了AUTOSAR基础软件模块以太网接口的功能、API和配置。 在AUTOSAR分层软件架构[1]中,以太网接口属于ECU抽象层,或者更准确地说,属于通信硬件抽象。 这表明了以太网接口的主要任务: 为上层提供独立于硬件的以太网通信系统接口,该系统…...

Windows系统离线安装使用pm2 管理进程
目录 1. 安装 Node.js 和 npm 2. 创建一个项目目录 3. 初始化 npm 项目 4. 下载 pm2 及其所有依赖 5. 打包 pm2 及其依赖 6. 将打包文件传输到内网服务器 7. 在内网服务器上解压并安装 8. 使用 pm2 总结 在联网的机器上,使用 npm(Node.js 包管理…...

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)
一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最…...
【深度学习】向量化
1. 什么是向量化 向量化通常是消除代码中显示for循环语句的技巧,在深度学习实际应用中,可能会遇到大量的训练数据,因为深度学习算法往往在这种情况下表现更好,所以代码的运行速度非常重要,否则如果它运行在一个大的数据…...

基于canal的Redis缓存双写
canal地址:alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 (github.com)https://github.com/alibaba/canal 1. 准备 1.1 MySQL 查看主机二进制日志 show master status 查看binlog是否开启 show variables like log_bin 授权canal连接MySQL账号 …...

以太网交换机工作原理学习笔记
在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。 1、以太网协议…...

ECCV`24 | 蚂蚁集团开源风格控制新SOTA!StyleTokenizer:零样本精确控制图像生成
文章链接:https://arxiv.org/pdf/2409.02543 代码&数据集链接: https://github.com/alipay/style-tokenizer 亮点直击 介绍了一种名为StyleTokenizer的新方法,用于在扩散模型中进行风格控制。这种方法允许通过一个任意参考图像实现对生成…...

Flutter的升级和降级步骤
升级 1.版本升级 // 升级到指定版本 flutter upgrade 版本号 // 升级到最新版本 flutter upgrade 2. 更新开发配置 启动 Android Studio。 打开 Settings 对话框,查看 SDK Manager。 如果你已经打开了一个项目,请打开 Tools > SDK Manager。 如果…...