maven之pom中的build标签
1、build标签分类
1.1、全局配置(project build)
针对整个项目的所有情况都有效。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> ... <build>…</build> ...
</project>
1.2、环境配置(profile build)
针对不同的profile配置。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> ... <profiles> <profile> <!– "Profile Build" contains a subset of "Project Build"s elements –> <build>…</build> </profile> </profiles> ...
</project>
2、build 配置说明
2.1、基本元素
<build><!-- 指定默认的 Maven 构建目标。当运行 mvn 命令时,将执行指定的目标(用不到) --><defaultGoal>install</defaultGoal><!-- 指定 Maven 构建输出的目录路径,下列是默认值--> <directory>target</directory> <finalName>${artifactId}-${version}</finalName><!-- 指定源代码文件的目录路径 --><sourceDirectory>src/main/java</sourceDirectory><!-- 指定脚本文件的源代码目录路径(用不到) --><scriptSourceDirectory>src/main/scripts</scriptSourceDirectory><!-- 指定test的源代码目录路径 --><testSourceDirectory>src/test/java</testSourceDirectory><!-- 指定编译后的类文件输出的目录路径 --><outputDirectory>target/classes</outputDirectory><!-- 指定编译后的test类文件输出的目录路径 --><testOutputDirectory>target/test-classes</testOutputDirectory><!-- 配置项目的资源目录, 例如配置文件、静态资源等 --><resources><resource><directory>src/main/resources</directory><!-- 可以有占位符,并替换占位符,即下面的${application.environment} --><filtering>true</filtering><includes><include>bootstrap.properties</include><include>bootstrap-${application.environment}.properties</include></includes></resource><resource><directory>src/main/resources</directory><!-- 没有占位符 --><filtering>false</filtering><includes><include>banner.txt</include><include>logback-spring.xml</include></includes></resource></resources><!-- 配置项目的test资源目录, 例如配置文件、静态资源等 --><testResources><testResource><directory>src/test/resources</directory></testResource></testResources><filters> <filter>filters/filter1.properties</filter> </filters> <!-- 插件版本管理 --><pluginManagement><plugins><!-- Springboot项目打包插件,生成JAR包 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version></plugin><!-- Maven编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version></plugin></plugins></pluginManagement>...
</build>
- defaultGoal :执行build任务时,如果没有指定目标,将使用的默认值。如上配置:在命令行中执行mvn,则相当于执行mvn install
- directory : 构建结果输出目录,默认在${basedir}/target目录。
- finalName :build目标文件的名称,默认情况为${artifactId}-${version}
- sourceDirectory :主体源程序存放目录,默认在${basedir}/src/main/java
- scriptSourceDirectory :脚本源程序存放目录,默认在: ${basedir}/src/main/scripts
- testSourceDirectory :测试源程序存放目录,默认在${basedir}/src/test/java
- outputDirectory :主体源程序编译结果输出目录,默认在${basedir}/target/classes
- testOutputDirectory :测试源程序编译结果输出目录,默认在${basedir}/target/test-classes
- resources :主体资源文件存放目录,默认在: ${basedir}/src/main/resources
- testResources :测试资源文件存放目录,默认在: ${basedir}/src/test/resources
- filters :给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。
2.2、Resources配置
<build> ... <resources> <resource> <targetPath>META-INF/plexus</targetPath> <filtering>false</filtering> <directory>${basedir}/src/main/plexus</directory> <includes> <include>configuration.xml</include> </includes> <excludes> <exclude>**/*.properties</exclude> </excludes> </resource> </resources> <testResources> ... </testResources> ...
</build>
用于包含或者排除某些资源文件:
- resources :一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里。
- targetPath :指定build后的resource存放的文件夹,默认是:${basedir}。通常被打包在jar中的resources的目标路径是META-INF
- filtering : 构建过程中是否对资源进行过滤,默认false。
- directory :定义resource文件所在的文件夹,默认为${basedir}/src/main/resources
- includes :指定哪些文件将被匹配,以*作为通配符。
- excludes :指定哪些文件将被忽略。
- testResources :定义和resource类似,只不过在test时使用。
2.3、plugins配置
<build> ... <plugins> <!-- 插件的坐标。此处引用的 maven-compiler-plugin 插件不是第三方的,是一个 Maven 自带的插件。 --><plugin> <groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version> <extensions>false</extensions> <inherited>true</inherited> <!-- configuration 标签:配置 maven-compiler-plugin 插件 --><configuration><!-- 具体配置信息会因为插件不同、需求不同而有所差异 --><classifier>test</classifier> <source>1.8</source><target>1.8</target><encoding>UTF-8</encoding><dependencies>...</dependencies> <executions> <execution> <id>pre-process-classes</id> <!-- phase : 关联的生命周期阶段 --><phase>compile</phase><!-- goals/goal:关联指定生命周期的目标 --> <goals> <goal>jar</goal> </goals> <configuration> <classifier>pre-process</classifier> </configuration> </execution> </executions> </plugin> </plugins>
</build>
用于指定使用的插件:
- GAV(即: groupId、artifactId、version):指定插件的标准坐标。
- extensions :是否加载该插件的扩展,默认false。
- inherited :该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
- configuration :该插件所需要的特殊配置,在父子项目之间可以覆盖或合并。
- dependencies :该插件所特有的依赖类库。
- executions :该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
- id :唯一标识;
- goals :执行目标的名称;
- phase :execution标签要执行的Maven构建生命周期阶段.
- inherited :该execution是否可被子项目继承;
- configuration :该execution的其他配置参数;
- profile:指定该execution标签在哪个profile中生效。
2.4.1、maven生命周期
详见:maven用久后必须了解的phase、goal参数及生命周期概念_maven goal参数-CSDN博客
- 生命周期有三种,分别是clean,default,site

- 每种生命周期都由多个阶段组成:
- clean:默认是清除target目录中的所有文件,避免将历史版本打到新的包中造成一些不在预期中的问题。
- process-resources:将资源文件src/main/resources下的文件复制到target/classes目录中。
- compile:将src/main/java下的代码编译成 class 文件,也放到target/classes目录中。
- process-test-resources:将资源文件src/test/resources下的文件复制到target/test-classes目录中。
- test-compile:将src/test/java下的代码编译成 class 文件,也放到target/test-classes目录中。
- test:运行单元测试并在target/surefire-reports中生成测试报告。
- package:将资源文件、class文件、pom文件打包成一个jar包。
- install:将生成的jar包推送到本地仓库中。
- deploy:将生成的jar包推送到远程仓库中。
- 执行构建时,会按照阶段顺序从上到下的执行,但只有绑定了插件目标的阶段才会执行;
2.4、pluginManagement配置
通过 pluginManagement 标签管理起来的插件就像 dependencyManagement 一样,子工程使用时可以省略版本号,起到在父工程中统一管理版本的效果。
<build> ... <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <id>pre-process-classes</id> <phase>compile</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>pre-process</classifier> </configuration> </execution> </executions> </plugin> </plugins> </pluginManagement> ...
</build>
pluginManagement标签存放着几个极少用到的插件:
- maven-antrun-plugin
- maven-assembly-plugin
- maven-dependency-plugin
- maven-release-plugin
被springboot-dependenciens管理的插件:
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId> </plugin>
上面是父工程的pom配置,在子pom中,我们只需要做配置即可,不需要版本号:
<build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> </plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin> </plugins> ...
</build>
相关文章:
maven之pom中的build标签
1、build标签分类 1.1、全局配置(project build) 针对整个项目的所有情况都有效。 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"htt…...
Cesium.js--》探秘Cesium背后的3D模型魔力—加载纽约模型
今天简单实现一个Cesium.js的小Demo,加强自己对Cesium知识的掌握与学习,先简单对这个开源库进行一个简单的介绍吧! Cesium 是一个开源的地理空间可视化引擎,用于创建基于 Web 的三维地球应用程序。它允许开发人员在网页上呈现高度…...
.NET i18n 多语言支持与国际化
环境 WIN10 VS2022 .NET8 1.👋创建项目 2.👀创建Resources Controllers HomeController.en.resx HomeController.fr.resx HomeController.zh.resx 3.🌱Program.cs添加国际化支持 // 添加国际化支持 builder.Services.AddLocalization(…...
基于Pytorch实现图像分类——基于jupyter
分类任务 网络基本构建与训练方法,常用函数解torch.nn.functional模块nn.Module模块 MNIST数据集下载 from pathlib import Path import requestsDATA_PATH Path("data") PATH DATA_PATH / "mnist"PATH.mkdir(parentsTrue, exist_okTrue)U…...
如何将CSDN的文章以PDF文件形式保存到本地
1.F12 打开开发者工具窗口 2.console下输入命令 (function(){$("#side").remove();$("#comment_title, #comment_list, #comment_bar, #comment_form, .announce, #ad_cen, #ad_bot").remove();$(".nav_top_2011, #header, #navigator").remove…...
面试经典150题——删除有序数组中的重复项
面试经典150题 day3 题目来源我的题解方法一 双指针 题目来源 力扣每日一题;题序:26 我的题解 方法一 双指针 使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。 时间复杂度:O(n) 空间复杂度&a…...
Unity3D知识点精华浓缩
一、细节 1、类与组件的关系 2、Time.deltaTime的含义 3、怎么表示一帧的移动距离 4、Update和LateUpdate的区别和适用场景 5、找游戏对象的方式(别的对象 / 当前对象的子对象) 6、组件1调用组件2中方法的方式 7、在面板中获取外部数据的方法 8、序列化属…...
HTML的文档说明
1.告诉浏览器当前网页的版本 2.写法: !以前的写法:要依据网页的HTML的版本去确定,紫萼发油很多很多。 具体的写法可以参考:W3C官网的文档说明 !新写法:W3C都推荐用h5的写法 <DOCTYPE ht…...
ubuntu 更新或更改GCC/G++
最近遇到一些问题,需要用到gcc-9/g-9,但是我自带的ubuntu18.04是gcc-7.5/g-7.5,所以升级一下,奈何文章太多而且很多无效,所以在此记录一下: 参考:https://stackoverflow.com/questions/19836858…...
Java --- Java语言基础
这个Java可是个好东西,是一门面对对象的程序设计语言,其语法很类似C,所以学过C的伙伴们就很好上手,另外Java对C进行了简化与提高,这个在后期学习会感受到,Java还有很多的类库API文档以及第三方开发包。 这…...
【C++算法竞赛 · 图论】图的存储
前言 图的存储 邻接矩阵 方法 复杂度 应用 例题 题解 邻接表 方法 复杂度 应用 前言 上一篇文章中(【C算法竞赛 图论】图论基础),介绍了图论相关的概念和一种图的存储的方法,这篇文章将会介绍剩下的两种方法ÿ…...
Spring AOP IOC
spring的优缺点 IOC集中管理对象,对象之间解耦,方便维护对象AOP在不修改原代码的情况下,实现一些拦截提供众多辅助类,方便开发方便集成各种优秀框架 紧耦合和松耦合 松耦合可以使用单一职责原则、接口分离原则、依赖倒置原则 …...
Linux ARM平台开发系列讲解(QEMU篇) 1.1 编译QEMU 构建RISC-V64架构 运行Linux kernel
1. 概述 QEMU可以模拟很多架构的CPU(ARM,RISC-V等),重点是免费,用来学Linux简直太适合不过了,所以,我打算开一章节来教QEMU的使用,这样也方便环境统一调试,本章节就讲解如何在Ubuntu搭建QEMU,我的环境是全新的Ubuntu22,QEMU下载的9.0,kernel下载的6.0. 2. 源码下载…...
Day19-【Java SE进阶】网络编程
一、网络编程 1.概述 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。java.net,*包下提供了网络编程的解决方案! 基本的通信架构 基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。 网络通信的…...
pyqt写个星三角降压启动方式2
星三角降压启动用可以用类进行封装,就像博图FB块那样。把逻辑都在类里完成,和外界需要交互的暴露出接口。测试过程中,发现类中直接用定时器QTimer会出现问题。然后就把定时器放到外面了。然后测试功能正常。 from PySide6.QtWidgets import …...
js可视化爬取数据生成当前热点词汇图
功能 可以爬取到很多数据,并且生成当前的热点词汇图,词越大越热门(词云图) 这里以b站某个评论区的数据为例,爬取63448条数据生成这样的图片 让我们能够更加直观的看到当前的热点 git地址 可以直接使用,中文…...
研发岗-面临统信UOS系统配置总结
第一步 获取root权限 配置环境等都需要用到root权限,所以我们先获取到root权限,方便下面的操作 下载软件 在UOS应用商店下载的所需应用 版本都比较低 安装node 官网下载了【arm64】的包,解压到指定文件夹,设置链接࿰…...
【STL详解 —— list的介绍及使用】
STL详解 —— list的介绍及使用 list的介绍list的介绍使用list的构造list iterator的使用list capacitylist element accesslist modifiers 示例list的迭代器失效 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭…...
cocos creator开发中遇到的问题和解决方案
前言 总结一下使用cocos开发遇到的坑,不定期更新。 问题汇总 代码修改Position坐标不生效 首先要通过打log或者断点排除下是不是逻辑上的问题,还有是不是有动画相关把位置修改了。我遇到的问题是坐标修改被widget组件覆盖了。 纹理压缩包体变大 co…...
10分钟带你学会配置DNS服务正反向解析
正向解析 服务端IP客户端IP网址192.168.160.134192.168.160.135www.openlab.com 一、首先做准备工作: 关闭安全软件,关闭防火墙,下载bind软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# y…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
