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>  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

知道智源开源最强语义向量模型BGE是什么吗?

Embedding模型作为大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;的一个重要辅助&#xff0c;是很多LLM应用必不可少的部分。但是&#xff0c;现实中开源的Emebdding模型却很少。北京智源人工智能研究院&#xff08;BAAI&#xff09;开源了BGE系列Emb…

Proxmox VE qm 方式恢复虚拟机

前言 使用qm 恢复Proxmox VE虚拟机&#xff0c;高效便捷。 登录Proxmox VE shell 执行恢复操作 假设备份好的文件在其它主机存储&#xff0c;我们可以下载到Proxmox VE本地目录下&#xff0c;如何执行虚拟化恢复操作--storage local-lvm&#xff08;恢复后存储到的位置&…

【linux】TCP编程{三次握手/四次挥手/API注意点/代码}

文章目录 1.API介绍1.1wc -l dirName1.2inet_pton1.3inet_aton1.4inet_ntop 2.三次握手与四次挥手1.三次握手2.四次挥手3.应用程序和TCP协议层如何交互总结 3.TCP 和 UDP 对比1.宏观2.详细 4.地址转换函数inet_ntoa 5.TCP编程代码Makefiletcp_client.cctcp_server.cctcp_server…

TypeScript学习--day1

一、介绍 TypeScript是JS的超集&#xff0c;为JS添加了类型支持。 1.1 为什么添加类型支持 JS代码的错误大部分是类型错误&#xff0c;增加改Bug时间&#xff0c;影响开发效率。 静态类型&#xff1a;编译期做类型检查 动态类型&#xff1a;执行期做类型检查 TS--静态类型编…

前端保留两位小数

一、保留两位小数&#xff08;四舍五入&#xff09; 解决方案&#xff1a;使用 toFixed(x) 方法可以对小数进行指定位数保留&#xff0c;其中x是要保留的位数用法&#xff1a;num.toFixed(x)&#xff0c;其中num为需要操作的数据&#xff0c;x为要保留的位数示例&#xff1a;1…

力扣LeetCode138. 复制带随机指针的链表 两种解法(C语言实现)

目录 题目链接 题目分析 题目定位&#xff1a; 解题思路 解题思路1&#xff08;粗暴但是复杂度高&#xff09; 解题思路2&#xff08;巧妙并且复杂度低&#xff09; 题目链接 138. 复制带随机指针的链表https://leetcode-cn.com/problems/copy-list-with-random-pointer/ …

双写一致性问题

双写一致性问题&#xff1a;同一份数据&#xff0c;需要写数据库、写缓存。数据库中的数据和缓存中的数据要一致 解决办法&#xff1a;延迟双删 当我们要进行更新操作时&#xff0c;先删除缓存&#xff0c;再更新数据库&#xff0c;延迟几百ms再删除一次redis的缓存数据。 示…

2023年蓝桥杯——日期统计

目录 题目链接&#xff1a;1.日期统计 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路 定义数据结构&#xff1a; 处理每一个月&#xff1a; 检查日期序列在num100中是否存在&#xff1a; 计数匹配的日期数&#xff1a; 输出结果&#xff1a; 代码实现 总结 题目链…

【Python习题】某景区门票的优惠措施为:购买5张以内门票不打折,5到20张打九折,20张以上打八折。编写程序,根据购买的门票数量,输出总票价。

题干 某景区门票的优惠措施为:购买5张以内门票不打折&#xff0c;5到20张打九折&#xff0c;20张以上打八折。编写程序&#xff0c;根据购买的门票数量&#xff0c;输出总票价。 代码

介绍几个好用的电商(淘宝京东1688)API接口,可测试

以下是几个好用的电商&#xff08;淘宝、京东、1688&#xff09;API接口&#xff0c;这些接口都可以进行测试以确保其稳定性和可用性&#xff1a; taobao.item_get-获取淘宝商品数据接口返回值说明 1.请求方式&#xff1a;HTTP POST GET &#xff08;复制薇&#xff1a;Anzex…

2024.4.13 Python 爬虫复习day01

目录 day01_HTTP协议HTML页面web服务器 各类名词解释 URL统一资源定位符 HTTP协议 HTML页面 知识点: 第一个页面 标题标签和图片标签 注册页面 登录页面 WEB服务器 安装fastapi和uvicorn 原始命令方式 镜像源命令方式 工具方式 快速搭建web服务器 知识点: 示例…

CH254X 8051芯片手册介绍

1 8051CPU 8051是一种8位元的单芯片微控制器&#xff0c;属于MCS-51单芯片的一种&#xff0c;由英特尔(Intel)公司于1981年制造。Intel公司将MCS51的核心技术授权给了很多其它公司&#xff0c;所以有很多公司在做以8051为核心的单片机&#xff0c;如Atmel、飞利浦、深联华等公…

ARMv8-A架构下的外部debug模型之外部调试事件(external debug events)概述

外部调试器与处理器之间的握手与external debug events 一&#xff0c;External Debug的使能二&#xff0c;外部调试器和CPU之间的握手三&#xff0c;外部调试事件 External debug events1. External debug request event2. Halt instruction debug event3. Halting step debug…

是的,本科毕业八年,我考研了

今天&#xff0c;是一篇纯分享文。 是的&#xff0c;本科毕业八年&#xff0c;我考研了。 停更10个月&#xff0c;历时296天&#xff0c;我考研上岸了。 小伙伴们&#xff0c;好久不见。 一 发今年第一篇文章的时候刚处理完后续事宜&#xff0c;就简单说了句&#xff0c;后台…

Vue3 ts环境下的PropType

简介 在Typscript中&#xff0c;我们可以使用PropType进行类型的推断与验证。在日常的开发中我们常常会遇到下面这样的场景&#xff1a; 我们通过request请求从服务端获取了一条数据&#xff0c;数据是个Array的格式&#xff0c;Array中的每个元素又是一个对象&#xff0c;像下…

【神经网络与深度学习】循环神经网络基础

tokenization tokenization&#xff1a;分词 每一个词语都是token 分词方法&#xff1a;转为单个词、转为多个词语 N-gram表示法 准备词语特征的方法 &#xff08;把连续的N个词作为特征&#xff09; 如 ”我爱你“——>[我&#xff0c;爱&#xff0c;你] 2-gram——[[我…

java项目之校园兼职系统(ssm框架+mysql数据库+文档)

项目简介 校园兼职系统的主要使用者分为&#xff1a;管理员&#xff1a;首页、个人中心、专业管理、商家管理、热门兼职管理、学生管理、兼职接单管理、学生咨询管理、兼职任务管理、完成评价管理、管理员管理、系统管理等模块信息的查看及相应操作&#xff1b;学生&#xff1…

在vue中配置样式 max-width:100px时,发现和width:100px一样没有对应的递增到最大宽度的效果?怎么回事?怎么解决?

原因&#xff1a; 可能时vue的样式大部分和display相关&#xff0c;有很多的联系&#xff0c;导致不生效 解决&#xff1a; 对设置max-width样式的元素设置display:inline-block;属性&#xff0c;即可生效&#xff0c;实现随着子元素的扩展而扩展并增加固定到最大的宽度

使用 ASE 拼接分子

在部分应用场景下&#xff0c;我们需要对两个分子片段进行拼接&#xff0c;例如锂电电解液数据库 LiBE 然而&#xff0c;当前并没有合适的拼接方法。下面是一些已有方法的调研结果&#xff1a; 在 LiBE 论文的附录里&#xff0c;作者使用 pymatgen 进行分子拼接。 其思路是&…

分享2024高校专业建设思路及建设效果

广东泰迪智能科技股份有限公司成立于2013年&#xff0c;是一家专业从事大数据、人工智能等数据智能技术研发、咨询和培训的高科技企业&#xff0c;公司基于十余年的数据智能产业实践经验&#xff0c;构建“产、岗、课、赛、证、文”融通的特色应用型人才培养模式&#xff0c;助…