Maven pom.xml文件中build,plugin标签的具体使用

<build> 标签
`<build>` 标签是 `pom.xml` 文件中一个重要的标签,用于配置 Maven 项目的构建过程。在 `<build>` 标签下,可以配置构建相关的设置,包括源代码目录、输出目录、插件配置等。
以下是 `<build>` 标签的详细使用方法和适用场景:
 

<build><!-- 配置项目的源代码目录,默认为 "src/main/java" --><sourceDirectory>src/main/java</sourceDirectory><!-- 配置项目的测试代码目录,默认为 "src/test/java" --><testSourceDirectory>src/test/java</testSourceDirectory><!-- 配置项目的资源文件目录,默认为 "src/main/resources" --><resources><resource><directory>src/main/resources</directory></resource></resources><!-- 配置项目的测试资源文件目录,默认为 "src/test/resources" --><testResources><testResource><directory>src/test/resources</directory></testResource></testResources><!-- 配置项目的输出目录,默认为 "target/classes" --><outputDirectory>target/classes</outputDirectory><!-- 配置项目的测试输出目录,默认为 "target/test-classes" --><testOutputDirectory>target/test-classes</testOutputDirectory><!-- 配置项目的插件列表,用于自定义项目构建过程 --><plugins><plugin><!-- 插件的坐标信息 --><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><!-- 插件的配置信息 --><configuration><!-- 配置插件的参数 --><source>1.8</source><target>1.8</target></configuration></plugin><!-- 可以声明其他插件 --></plugins><!-- 其他构建相关的配置 -->
</build>

适用场景:

1. 指定源代码和测试代码目录:
   使用 `<sourceDirectory>` 和 `<testSourceDirectory>` 标签可以自定义项目的源代码和测试代码目录。如果项目结构不同于默认的目录结构(如多模块项目等),则可以使用这些配置指定实际的代码目录。

2. 配置资源文件目录:
   通过 `<resources>` 和 `<testResources>` 标签,可以指定项目的资源文件目录和测试资源文件目录。资源文件通常包含配置文件、属性文件、模板等,可以根据需要调整资源文件的位置。

3. 配置输出目录:
   使用 `<outputDirectory>` 和 `<testOutputDirectory>` 标签可以配置项目的输出目录和测试输出目录。编译后的类文件和测试类文件会被输出到这些目录中。

4. 自定义构建过程:
   `<plugins>` 标签用于配置项目使用的 Maven 插件,通过自定义插件的目标和参数,可以实现更复杂的构建过程,例如代码生成、压缩、静态分析等。

5. 使用其他构建相关的配置:
   在 `<build>` 标签内还可以使用其他构建相关的配置,例如使用 `<extensions>` 标签声明项目构建时要使用的 Maven 扩展,或使用 `<defaultGoal>` 标签指定默认的构建目标等。

总结:`<build>` 标签用于配置 Maven 项目的构建过程,包括源代码目录、输出目录、资源文件目录、插件列表等。通过在此标签下进行配置,可以根据项目的需求自定义构建过程,从而实现更灵活、高效的项目构建。


Maven 插件(Plugins)是用于扩展和定制 Maven 构建过程的工具。Maven 插件可以帮助执行各种任务,如编译代码、运行测试、打包项目、部署应用程序等。在 `pom.xml` 文件中,通过 `<plugins>` 和 `<plugin>` 标签来配置 Maven 插件。

以下是 Maven 插件的详细使用方法:

1. 声明插件依赖:
   在 `<build>` 标签内,通常有一个 `<plugins>` 标签,用于声明要使用的插件。在 `<plugins>` 标签下,每个插件都由一个 `<plugin>` 子标签来定义,可以包含以下信息:

   - `groupId`:插件的 Group ID,通常是 `org.apache.maven.plugins`。
   - `artifactId`:插件的 Artifact ID,标识特定的插件。
   - `version`:插件的版本号。

   示例:

   <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version></plugin><!-- 可以声明其他插件 --></plugins></build>


2. 配置插件目标(Goal):
   Maven 插件的功能通过目标(Goal)来实现,一个插件可以有多个目标。目标是插件的执行单元,通过在插件配置中指定目标,可以按需执行插件的不同功能。

   示例:

   <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin>

   在上面的示例中,`maven-compiler-plugin` 插件的目标是编译 Java 代码。`<configuration>` 子标签用于配置插件的目标,指定 Java 编译的源代码版本和目标版本。

3. 自定义插件配置:
   大多数 Maven 插件支持自定义配置,可以通过在 `<configuration>` 子标签内指定参数来实现。插件的具体配置取决于插件本身的功能和支持的配置选项。

   示例:

   <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration></plugin>

   在上面的示例中,`maven-jar-plugin` 插件用于创建 JAR 文件,并通过自定义配置将依赖库打包到 JAR 中。

4. 执行插件目标:
   通过在命令行中输入 `mvn` 命令,加上插件的目标名称,来执行插件功能。例如,要执行 `maven-compiler-plugin` 的 `compile` 目标(编译代码),可以使用以下命令:

mvn compile

   这将触发 Maven 编译插件,编译项目的源代码。

5. 生命周期绑定:
   Maven 插件通常与构建的生命周期绑定,这意味着某些插件目标会在特定的构建阶段自动执行。例如,`maven-compiler-plugin` 插件的 `compile` 目标与 Maven 构建的 `compile` 阶段绑定,因此在执行 `mvn compile` 命令时,编译代码的目标会自动执行。

总结:Maven 插件通过在 `pom.xml` 文件中声明和配置插件,然后使用命令行执行插件目标来实现项目的构建和其他定制化操作。插件是 Maven 构建的关键组成部分,它们为开发人员提供了丰富的功能,帮助自动化构建过程和其他开发任务。

Maven 中有很多插件可以用于不同的构建任务和工作流程。在此,我列举一些常见的 Maven 插件以及它们的使用场景,并提供简单的使用案例和注释。

1. `maven-compiler-plugin` 插件
   - 使用场景:编译项目的 Java 源代码。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin>

     
     注释:上面的配置指定使用 Java 8 编译源代码,并将生成的字节码与目标版本设置为 Java 8。

2. `maven-jar-plugin` 插件
   - 使用场景:创建 JAR 文件。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest></archive></configuration></plugin>

     注释:上面的配置在 JAR 的 MANIFEST.MF 文件中添加类路径信息,并将依赖库放置在 JAR 内的 "lib/" 目录下。

3. `maven-surefire-plugin` 插件
   - 使用场景:运行项目的单元测试。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version><configuration><includes><include>**/*Test.java</include></includes></configuration></plugin>

     注释:上面的配置指定运行所有以 "Test.java" 结尾的单元测试类。

4. `maven-assembly-plugin` 插件
   - 使用场景:创建自定义的分发包,如包含所有依赖的可执行 JAR 文件。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin>

     注释:上面的配置创建一个包含所有依赖的可执行 JAR 文件。

5. `maven-clean-plugin` 插件
   - 使用场景:清理项目构建产生的临时文件和目录。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin>

     注释:上面的配置可以使用 `mvn clean` 命令清理项目构建产生的临时文件和目录。

6. `maven-install-plugin` 插件
   - 使用场景:将项目安装到本地 Maven 仓库。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>3.0.0-M1</version></plugin>

     注释:上面的配置可以使用 `mvn install` 命令将项目安装到本地 Maven 仓库。


7. `maven-deploy-plugin` 插件
   - 使用场景:将项目构建结果部署到远程 Maven 仓库,通常是私有或公共的远程仓库。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>3.0.0-M1</version></plugin>

     注释:上面的配置用于部署构建结果到远程 Maven 仓库,通常与 `mvn deploy` 命令一起使用。

8. `maven-shade-plugin` 插件
   - 使用场景:创建一个包含所有依赖的可执行 JAR 文件,并且可以排除冲突的依赖。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version><configuration><!-- 配置排除依赖 --><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters></configuration></plugin>

     注释:上面的配置创建一个包含所有依赖的可执行 JAR 文件,并且排除了一些冲突的依赖。

9. `maven-site-plugin` 插件
   - 使用场景:生成项目站点文档,包括项目信息、依赖、测试报告等。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>3.12.1</version></plugin>

     注释:上面的配置用于生成项目站点文档,可以使用 `mvn site` 命令来执行。

10. `maven-checkstyle-plugin` 插件
    - 使用场景:对项目代码进行静态代码分析,以检查是否符合编码规范。
    - 使用案例:

      <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><version>3.1.2</version><configuration><!-- 配置 Checkstyle 的规则 --><configLocation>checkstyle.xml</configLocation></configuration><executions><!-- 在验证阶段执行 Checkstyle 检查 --><execution><id>validate</id><phase>validate</phase><goals><goal>check</goal></goals></execution></executions></plugin>

      注释:上面的配置用于在验证阶段执行 Checkstyle 检查,可以自定义 Checkstyle 的规则文件。

11. `maven-release-plugin` 插件
    - 使用场景:发布项目的正式版本,包括打标签、升级版本号等。
    - 使用案例:

      <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>3.0.0-M1</version><configuration><!-- 配置发布版本的相关信息 --></configuration></plugin>

      注释:上面的配置用于配置发布版本的相关信息,可以使用 `mvn release:prepare` 和 `mvn release:perform` 命令来执行版本发布流程。

12. `maven-assembly-plugin` 插件
    - 使用场景:创建自定义的分发包,可以包含项目的可执行 JAR 文件和其他资源文件。
    - 使用案例:

      <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><!-- 配置分发包的描述 --><descriptor>assembly.xml</descriptor></configuration><executions><execution><!-- 在打包阶段执行创建分发包 --><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin>

      注释:上面的配置用于在打包阶段执行创建自定义的分发包,可以通过 `assembly.xml` 文件来定义分发包的内容和结构。


13. `maven-javadoc-plugin` 插件
   - 使用场景:生成项目的 Javadoc 文档,用于描述代码的接口和注释。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.3.0</version><configuration><!-- 配置生成 Javadoc 的相关设置 --></configuration></plugin>

     注释:上面的配置用于配置生成 Javadoc 的相关设置,可以使用 `mvn javadoc:javadoc` 命令来执行生成 Javadoc 文档。

14. `maven-antrun-plugin` 插件
   - 使用场景:在 Maven 构建过程中执行 Ant 任务,可以用于执行自定义的构建任务。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>3.0.0</version><executions><execution><id>custom-task</id><phase>compile</phase><configuration><!-- 配置执行的 Ant 任务 --><target><echo message="Executing custom task..."/></target></configuration><goals><goal>run</goal></goals></execution></executions></plugin>

     注释:上面的配置用于在编译阶段执行自定义的 Ant 任务,这里简单地输出一条消息。

15. `maven-resources-plugin` 插件
   - 使用场景:处理项目的资源文件,例如复制、过滤、替换等操作。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><!-- 配置资源文件的处理规则 --><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources></configuration></plugin>

     注释:上面的配置用于将 `src/main/resources` 目录下的资源文件进行过滤,替换其中的属性占位符等。

16. `maven-enforcer-plugin` 插件
   - 使用场景:强制执行特定的构建规则,例如强制使用特定的 Java 版本。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>3.0.0-M3</version><executions><execution><id>enforce-java-version</id><goals><goal>enforce</goal></goals><configuration><!-- 配置强制的规则 --><rules><requireJavaVersion><version>1.8</version></requireJavaVersion></rules></configuration></execution></executions></plugin>

     注释:上面的配置用于强制要求使用 Java 8 版本。

17. `maven-war-plugin` 插件
   - 使用场景:将项目打包为 WAR 文件,用于部署到 Servlet 容器(如 Tomcat、Jetty 等)。
   - 使用案例:

     <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.1</version><configuration><!-- 配置 WAR 文件的属性 --></configuration></plugin>

     注释:上面的配置用于配置 WAR 文件的属性,例如 Web 资源目录、Web 应用清单文件等。

这些是更多常见的 Maven 插件及其使用场景、使用案例和注释。Maven 提供了众多功能强大的插件,可以满足各种构建和项目管理需求。开发人员可以根据项目的特点和要求,选择合适的插件,并灵活配置以提高项目开发和构建的效率。

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

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

相关文章

数学建模学习(8):单目标和多目标规划

优化问题描述 优化 优化算法是指在满足一定条件下,在众多方案中或者参数中最优方案,或者参数值,以使得某个或者多个功能指标达到最优,或使得系统的某些性能指标达到最大值或者最小值 线性规划 线性规划是指目标函数和约束都是线性的情况 [x,fval]linprog(f,A,b,Aeq,Beq,LB,U…

MyBatis缓存-提高检索效率的利器--二级缓存

文章目录 缓存-提高检索效率的利器缓存-官方文档二级缓存基本介绍二级缓存原理图 二级缓存快速入门快速入门注意事项和使用陷阱理解二级缓存策略的参数 四大策略如何禁用二级缓存mybatis 刷新二级缓存的设置 缓存-提高检索效率的利器 缓存-官方文档 文档地址: https://mybati…

秋叶整合包如何安装Python包

前几天写了一篇《手把手教你在本机安装Stable Diffusion秋叶整合包》的文章&#xff0c;有同学运行时遇到缺少Python Module的问题&#xff0c;帮助他处理了一下&#xff0c;今天把这个经验分享给大家&#xff0c;希望能帮助到更多的同学。 有时候启动某些插件的时候会出现 Mo…

【单机多卡】torch改造代码为DDP单机多卡分布式并行

torch分布式数据并行DDPtorch.nn.parallel.DistributedDataParallel代码修改记录。&#xff08;要求pytorch_version>1.0&#xff09; 目录 1.&#x1f344;&#x1f344;要修改的地方概览 2.✏️✏️初始化 3.✏️✏️设置当前进程GPU 4.✏️✏️设置sampler 5.✏️✏…

【设计模式】简单工厂模式

C语言实现简单的工厂模式 #include <stdio.h> #include <stdlib.h>// 图形类型枚举 typedef enum {CIRCLE,SQUARE,RECTANGLE } ShapeType;// 图形结构体 typedef struct {ShapeType type;float area; } Shape;// 创建圆形 Shape* createCircle() {Shape* circle …

大数据开发面试必问:Hive调优技巧系列一

Hive必问调优 Hive 调优拆解:Hive SQL 几乎是每一位互联网分析师的必备技能&#xff0c;相信很多小伙伴都有被面试官问到 Hive 优化问题的经历。所以掌握扎实的 HQL 基础尤为重要&#xff0c;hive优化也是小伙伴应该掌握的一项技能&#xff0c;本篇文章具体从hive建表优化、HQ…

数据结构-链表结构-单向链表

链表结构 说到链表结构就不得不提起数据结构&#xff0c;什么是数据结构&#xff1f;就是用来组织和存储数据的某种结构。那么到底是某种结构呢&#xff1f; 数据结构分为&#xff1a; 线性结构 数组&#xff0c;链表&#xff0c;栈&#xff0c;队列 树形结构 二叉树&#x…

QWidget窗口类

QWidget窗口类 设置父对象窗口位置窗口尺寸窗口标题和图标信号槽函数例子1例子3例子3 设置父对象 // 构造函数 QWidget::QWidget(QWidget *parent nullptr, Qt::WindowFlags f Qt::WindowFlags());// 公共成员函数 // 给当前窗口设置父对象 void QWidget::setParent(QWidget…

Linux系统下MySQL读写分离

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、基于Amoeba读写分离 1.基于程序代码内部实现 2.基于中间代理层实现 三、操作步骤 1.在主机Amoeba上安装java环境 2.安装并配置Amoeba 3.配置Amoeba读写分离…

【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。

1. 数据源头之一 : 汇率变化 从程序模拟趋势来看&#xff0c;美元在持续弱势状态&#xff0c;周线上正在构建一个新的下跌趋势&#xff0c;而且正在反抽过程中&#xff0c;即将完成&#xff0c;如果没有外部干预&#xff0c;会顺势往下。从月线来看&#xff0c;高点逐步降低&a…

没有 telnet 不能测试端口?容器化部署最佳的端口测试方式

写在前面 生产中遇到&#xff0c;整理笔记在容器中没有 telnet &#xff0c;如何测试远程端口理解不足小伙伴帮忙指正 他的一生告诉我们&#xff0c;不能自爱就不能爱人&#xff0c;憎恨自己也必憎恨他人&#xff0c;最后也会像可恶的自私一样&#xff0c;使人变得极度孤独和悲…

线性代数的学习和整理2:线性代数的基础知识(整理ing)

目录 0 写在前面的话 网上推荐的线性代数的课程 1 线性代数和矩阵的各种概念 1.1 各种逻辑图 2 关于线性代数入门的各种灵魂发问 2.1 什么是线性&#xff0c;什么是线性相关 &#xff1f; 为什么叫线性变换&#xff1f; 为什么叫线性代数&#xff1f; 2.2 线性代数是人造…

【Linux】进程篇(补):简易 shell 的实现(进程深刻理解、内建命令的使用)

文章目录 makefilemybash.c 代码逻辑框架&#xff08;重要的是&#xff0c;边写边查&#xff01;&#xff09; 命令行提示符&#xff0c;fflush 刷新显示获取 输入的 有效字符串&#xff0c;定义一个字符数组&#xff0c;用 fgets 从键盘上获取&#xff08;注意处理命令行输入…

【疑难杂症专辑】【jlink 关闭了调试接口/进入休眠/停机不可下载】

做开发调试器的正常使用是基础&#xff0c;但有时候会人为造成一些问题。如下场景&#xff1a; 使用四线SW接口&#xff0c;进入低功耗停机模式后不能下载 先点下载&#xff0c;等keil在查找设备时短接复位然后断开把单片机唤醒&#xff0c;看自己的唤醒条件是什么&#xff0c…

Spark性能调优指南来了!

1、什么是Spark Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Spark Core&#xff1a;实现了Spark的基本功能&#xff0c;包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Dat…

安科瑞智慧空开微型断路器在银行的应用-安科瑞黄安南

应用场景 智能微型断路器与智能网关组合应用于末端回路 功能 1.计量功能&#xff1a;实时上报电压、电流、功率、电能、漏电、温度、频率等电参量&#xff1b; 2.报警功能&#xff1a;过压报警、欠压报警、过流报警、过载报警、漏电报警、超温报警、三相电缺相报警&#xff…

论文笔记:Adjusting for Autocorrelated Errors in Neural Networks for Time Series

2021 NIPS 原来的时间序列预测任务是根据预测论文提出用一阶自回归误差预测 一阶差分&#xff0c;类似于ResNet的残差思路&#xff1f;记为pred&#xff0c;最终的预测结果

【蓝桥杯备考资料】如何进入国赛?

目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类&#xff08;填空题&#xff09;三部排序&#xff08;填空题&#xff09;错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…

维护电脑,让“战友”保持长寿命

目录 维护电脑&#xff0c;让“战友”保持长寿命介绍你的电脑介绍一下你的日常维护措施给出一些你觉得有用的维护技巧不推荐做些什么其他补充总结 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后…

1.0 python环境安装

1 python环境安装 python安装教程原文 2 PyCharm安装教程 PyCharm安装教程