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>  

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

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

相关文章

常见的垃圾回收器(上)

文章目录 Serial垃圾回收器 SerialOld垃圾回收器PS POParNewCMS 常见的垃圾回收器&#xff08;下&#xff09; Serial垃圾回收器 SerialOld垃圾回收器 Serial是一种单线程串行回收年轻代的垃圾回收器 回收年代和算法 年轻代&#xff1a;复制算法 老年代&#xff1a;标记-整…

Autosar初学习

前言&#xff1a; 已下面这张图为例&#xff0c;进行Autosar初学习中SWC设计。 简单解释一下这张图&#xff0c;S-R Interface中 Receive Port的话有两个 分别是输入SeatSwitch和PowerManagement; Sender Port有一个 DialLED&#xff0c; 有一个标定量Calibration 1、Simulink…

一些知识点小细节

当遇到的问题有关逆序输出&#xff0c;可以转换一下思想&#xff0c;就是使用for循环的时候&#xff0c;i的初始化是从数组或者是字符串的最后一个&#xff0c;然后注意设置循环结束的条件&#xff0c;最重要的是不要忘记i--;而不是I&#xff1b; 注意&#xff1a;当要逆序输出…

OpenHarmony实例:【资源管理器】

介绍 本工程使用[ohos.app.ability.common] 接口中的AbilityContext类&#xff0c;获取资源管理器resourceManager&#xff0c;使用[ohos.resourceManager.d.ts]中的接口&#xff0c;展示了格式化字符串查询、基于指定屏幕分辨率查询媒体资源、获取系统资源管理对象等基础功能…

Trinamic步进电机控制模块助力抗击疟疾

疟疾是世界上最致命的传染病之一。这种疾病在亚洲、非洲和南美洲的热带地区十分常见&#xff0c;越早诊断&#xff0c;越能有效治疗。标准疟疾检测需要由训练有素的技术人员在显微镜下检测血液样本&#xff0c;以确认是否存在疟原虫&#xff0c;以及疟原虫的数量和类型。仅在印…

弱口令入侵FE企业管理平台【附口令】

漏洞描述 飞企互联-FE企业运营管理平台 druid路径弱口令&#xff0c;攻击者可能通过尝试弱口令&#xff0c;非法进入系统&#xff0c;恶意操作或者收集信息进一步攻击利用。 漏洞复现 1、Fofa app"飞企互联-FE企业运营管理平台"2、零零信安 (html_banner360浏览…

【python】基于pyttsx3库的字符串转音频文件

一、源码 import pyttsx3 engine pyttsx3.init() engine.setProperty(volume, 0.8) engine.setProperty(rate, 150) engine.save_to_file("Hello, World!", "output.mp3") engine.runAndWait()二、介绍 使用pyttsx3库&#xff0c;设置声音与速率&#x…

聊一聊一些关于npm、pnpm、yarn的事

前言 整理了最近的闲聊&#xff0c;话题是前端各个包管理器&#xff0c;如果分享的不对或者有异议的地方&#xff0c;麻烦请及时告诉我~ 耐心看完&#xff0c;也许你会有所收获~ 概述 本文阅读时间&#xff1a;10-15分钟左右&#xff1b; 难度&#xff1a;初级&#xff0c…

【回溯】Leetcode 51. N 皇后【困难】

N 皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。…

C# Web应用调用EXE文件的一些实践

目录 需求 范例运行环境 可执行文件的设计 调用可执行文件方法 RunExecuteFile RunShellExecuteFile 方法的区别 WEB调用举例 小结 需求 最近同事使用Python开发了一款智能文字转语音的程序&#xff0c;经讨论部署在WINDOWS环境服务器下&#xff0c;因此需要生成目标…

Pytest实践:Python测试技术基础知识!

一、简介 在软件开发领域&#xff0c;确保代码的正确性和稳健性至关重要。这就是软件测试发挥作用的地方。Python 是一种通用且广泛使用的编程语言&#xff0c;提供了大量的工具和库来帮助测试过程。 其中&#xff0c;Pytest就是一个很好用的测试框架&#xff0c;可以在 Pyth…

transformer上手(3) —— 开箱即用的 pipelines

1 开箱即用的 pipelines Transformers 库将目前的 NLP 任务归纳为几下几类&#xff1a; 文本分类&#xff1a;例如情感分析、句子对关系判断等&#xff1b;对文本中的词语进行分类&#xff1a;例如词性标注 (POS)、命名实体识别 (NER) 等&#xff1b;文本生成&#xff1a;例如…

2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 A题 移动通信网络中PCI规划问题 原题再现&#xff1a; 物理小区识别码(PCI)规划是移动通信网络中下行链路层上&#xff0c;对各覆盖小区编号进行合理配置&#xff0c;以避免 PCI 冲突、PCI 混淆以及 PCI 模3 千扰等现象。PCI 规划…

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动&#xff0c;需要构建各组件的结构体&#xff0c;一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…

lv_micropython for ESP32-C3

一、开发平台说明 硬件&#xff1a;立创实战派ESP32-C3开发板。处理器ESP32-C3&#xff08;内置400KB SRAM&#xff09;&#xff0c;无内置FLASH&#xff0c;2.0寸液晶&#xff08;液晶驱动IC:ST7789&#xff0c;触屏驱动IC:FT6336&#xff09;&#xff0c;下载口UART0。 ESP…

c++ 中文转拼音的封装, char 类型 不支持 中文 已解决

在日常业务中&#xff0c;需要进行中文转拼音的检索。已便实现对应的 模糊搜索。 使用方法 std::string res "我是中国人";char* result new char[res.length() 1];for (int i 0; i < res.length(); i){result[i] res[i];}result[res.length()] \0;std::str…

【C++第三阶段】vector容器

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 构造函数赋值操作容量和大小插入和删除数据存取互换容器预留空间 构造函数 vector函数是常用数据结构&#xff0c;见于刷题网站。 它是单端数组&#xff0c;与普通数组区别在于可以…

【Linux】基础IO----理解缓冲区

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解缓冲区 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;Linux初阶 > 望…

Aritest+python+Jenkins解放双手iOS/Android自动化

ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案&#xff0c;实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念&#xff1a; 1. **ARITest**&#xff1a; ARITest 是一款功能全面的自动化测试工具&#xff0c;提供 UI 自动化、接口自…

独立服务器,数据安全保障:WorkPlus即时通讯为企业信息安全把关

随着手机普及率的不断增加&#xff0c;即时通讯已经成为了企业内部沟通的重要方式。WorkPlus作为一家领先的企业级即时通讯服务商&#xff0c;提供了全方位的即时通讯解决方案&#xff0c;助力企业实现沟通无障碍、协作高效率的目标。 WorkPlus提供了多样化的即时通讯功能&…