当前位置: 首页 > news >正文

【maven】pom.xml 文件详解

有关 maven 其他配置讲解参考
maven 配置文件 setting.xml 详解
pom.xml 文件是 Maven 项目的核心配置文件,其中包含了项目的元数据构建配置依赖管理等信息。以下是一个 pom.xml 文件的主要部分:

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd"><!-- 项目基本信息 --><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-project</artifactId><version>1.0.0</version><!-- 项目依赖配置 --><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.8.RELEASE</version></dependency><!-- 其他依赖配置 --></dependencies><!-- 构建配置 --><build><!-- 插件配置等 --></build><!-- 其他配置 -->
</project>

1、<project> 元素: 顶层元素,定义整个 Maven 项目。

<modelVersion> 元素: Maven 模型的版本号,当前版本为 4.0.0。

<groupId> 元素: 项目组标识符,通常采用反转的域名风格。

<artifactId> 元素: 项目的唯一标识符。

<version> 元素: 项目的版本号。

<packaging> 元素用于指定 Maven 项目的打包方式,即最终产物的类型。该元素位于 pom.xml 文件的 <project> 元素下。以下是 <packaging> 元素的常见取值:

  • jar(默认值): 生成 JAR 文件。

    <packaging>jar</packaging>
    
  • war: 生成 WAR 文件,用于部署到 Java Web 容器(如 Tomcat)。

    <packaging>war</packaging>
    
  • pom: 用于聚合其他 Maven 项目,不生成实际的构建产物。 POM 项目可以用于聚合多个子项目,将它们组织成一个逻辑单元。父项目的 POM 文件中可以包含一些通用的配置信息,例如依赖管理、插件配置等,这样子项目可以继承这些配置,减少重复的配置工作。使用 POM 项目作为父项目进行项目聚合在微服务系统中是一种常见的做法

    <project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-parent</artifactId><version>1.0.0</version><packaging>pom</packaging> <!-- 聚合项目的打包方式为 POM --><!-- 子项目列表 --><modules><module>module1</module><module>module2</module><!-- ... 其他子项目 ... --></modules><!-- 其他聚合项目的配置 -->
    </project>
    
  • ear: 生成 Enterprise Archive(EAR)文件,用于部署到 Java EE 应用服务器。

    <packaging>ear</packaging>
    
  • maven-plugin: 用于构建 Maven 插件。

    <packaging>maven-plugin</packaging>
    
  • bundle: 用于构建 OSGi bundle。

    <packaging>bundle</packaging>
    
  • 其他自定义类型: Maven 允许用户定义自己的打包类型,例如一些特定的构建工具或应用程序类型。

    <project><!-- 其他项目配置 --><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-project</artifactId><version>1.0.0</version><!-- 指定打包方式为 JAR --><packaging>jar</packaging><!-- 其他项目配置 --></project>
    

    通过设置 元素,可以指定 Maven 构建工具在执行 mvn package 等构建命令时生成特定类型的构建产物。不同的打包方式会影响最终生成的文件类型和结构。

2、<properties> 元素是 Maven POM 文件中用于定义项目属性的部分。

<properties> 中,你可以定义一些变量,然后在 POM 文件的其他地方引用这些变量,以便在整个项目中统一管理一些配置信息。以下是一个简单的示例,展示了如何在 <properties> 中定义属性:

<project><!-- 其他项目配置 --><properties><java.version>1.8</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 其他属性的定义 --></properties><!-- 其他项目配置 --></project>

3、<dependencies> 元素: 定义项目的依赖关系。

<dependency> 元素: 声明一个依赖,包含 <groupId><artifactId><version> 等元素。
<dependencyManagement> 元素是 Maven POM 文件中的一个重要部分,用于集中管理项目中所有模块的依赖版本信息。通过配置 <dependencyManagement>包住的<dependencies>,可以确保项目中的所有模块都使用相同版本的依赖,从而减少版本冲突的可能性。子项目可以通过继承父项目的 部分,自己的 pom 文件依赖版本号可以省略,从而使用父项目中定义的依赖版本。

4、<build> 元素: 定义项目的构建配置。

<plugins> 元素: 插件配置,例如 Maven Compiler 插件、Maven Surefire 插件等。

5、 <distributionManagement>用于配置 Maven 构建输出的分发管理信息

它主要用于指定 Maven 构建结果的发布位置,包括发布到 Maven 仓库、远程仓库、FTP 服务器等。
以下是 <distributionManagement> 的一个简单示例:

<project><!-- 其他项目配置 --><distributionManagement><repository><id>my-repo</id><url>https://example.com/maven-repo</url></repository><snapshotRepository><id>my-snapshot-repo</id><url>https://example.com/maven-snapshot-repo</url></snapshotRepository></distributionManagement><!-- 其他项目配置 --></project>

在上述示例中,<distributionManagement> 配置了两个部分:

<repository>:用于发布正式版本(Release)。指定了 Maven 正式版本构建结果的发布位置,包括 id(标识符)和 url(发布的 URL)。正式版本和快照版本参考【maven】正式版本和快照版本详解

<snapshotRepository>:用于发布快照版本(Snapshot)。类似于 <repository>,但用于发布 Maven 快照版本。

这样配置后,当运行 mvn deploy 命令时,Maven 将会把构建结果发布到指定的仓库中。在实际项目中,根据实际需要,可以根据 <distributionManagement> 配置发布到不同的 Maven 仓库或其他存储位置。通常情况下我们的版本号带有后缀-SNAPSHOT ,发布的就是快照版本。在 pom.xml 文件中将项目的版本号修改为正式版本号,去掉 -SNAPSHOT 后缀, 接着遵循正式发布版本操作打标签等,再发布就是正式版本。

需要注意的是,<distributionManagement> 中的配置通常与 Maven 仓库管理工具(如 Nexus、Artifactory)等结合使用,以实现更灵活的构建发布管理。

6、其他配置: 还可以包含其他配置元素,

例如 <repositories>(定义项目使用的远程仓库)、<properties>(定义属性)、<profiles>(定义不同环境的配置)等。和setting.xml 相似,具体可参考【maven】setting.xml文件详解。

相关文章:

【maven】pom.xml 文件详解

有关 maven 其他配置讲解参考 maven 配置文件 setting.xml 详解 pom.xml 文件是 Maven 项目的核心配置文件&#xff0c;其中包含了项目的元数据、构建配置、依赖管理等信息。以下是一个 pom.xml 文件的主要部分&#xff1a; <?xml version"1.0" encoding"U…...

SpringMVC源码解析——DispatcherServlet初始化

在Spring中&#xff0c;ContextLoaderListener只是辅助功能&#xff0c;用于创建WebApplicationContext类型的实例&#xff0c;而真正的逻辑实现其实是在DispatcherServlet中进行的&#xff0c;DispatcherServlet是实现Servlet接口的实现类。Servlet是一个JAVA编写的程序&#…...

搞定Apache Superset

踩雷了无数次终于解决了Superset的一系列问题 现在是北京时间2023年12月27日&#xff0c;亲测有效。 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数据分析引擎&#xff…...

【每日试题】java面试之ssm框架

以下是20道常见的SSM&#xff08;SpringSpring MVCMyBatis&#xff09;面试题目和答案&#xff1a; 什么是SSM框架&#xff1f; SSM是指SpringSpring MVCMyBatis的组合&#xff0c;它是Java Web开发中常用的轻量级框架集合。 介绍一下SSM框架各个组件的作用&#xff1f; Sprin…...

Flutter 疑难杂症集合

一. Flutter集成uni小程序sdk 1. 手机连接电脑测试打开uni小程序没问题&#xff0c;打包成apk后debug编译下的apk也没问题&#xff0c;但就是release编译的apk包打不开小程序。 报错情景&#xff1a;点击后页面会闪现一下黑色的背景&#xff0c;然后又跳转回了点击之前的页面。…...

PHP序列化总结1--序列化和反序列化的基础知识

序列化和反序列化的作用 1.序列化&#xff1a;将对象转化成数组或者字符串的形式 2.反序列化&#xff1a;将数组或字符串的形式转化为对象 为什么要进行序列化 这种数据形式中间会有很多空格&#xff0c;不同人有不同的书写情况&#xff0c;可能还会出现换行的情况 为此为了…...

【Linux】 last 命令使用

last 命令 用于检索和展示系统中用户的登录信息。它从/var/log/wtmp文件中读取记录&#xff0c;并将登录信息按时间顺序列出。 著者 Miquel van Smoorenburg 语法 last [-R] [-num] [ -n num ] [-adiox] [ -f file ] [name...] [tty...]last 命令 -Linux手册页 选项及作用…...

Git 分布式版本控制系统(序章1)

第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git&#xff0c;同时&#xff0c;也方便管理自己的Qt项目。 一、Git 客户端下载&#xff08;Windows&#xff09; 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…...

给WordPress网站添加返回顶部按钮

给WordPress网站底部添加一个按钮&#xff0c;点它就可以现实快速返回到顶部。有两种方法可以现实&#xff0c;一种是通过安装相关插件来实现。另外一种方式就是以纯属代码的方式来实现。 给WordPress网站底部添加一个按钮&#xff0c;点它就可以现实快速返回到顶部。有两种方…...

App Inventor 2 接入短信服务,实现短信验证码功能

发送短信验证码功能一般都是基于短信平台提供的sdk进行调用&#xff0c;这里是基于阿里云短信平台进行的开发&#xff0c;阿里云短信平台接入步骤请点此参考。 App Inventor 2拓展提供的函数如下&#xff1a; 主要提供2个函数&#xff0c;生成随机位数的数字随机码 和 发送短信…...

Linux环境grep搜索方法记录

1 grep grep 命令&#xff0c;用来搜索字符串所在位置&#xff0c;可以具体到不同文件&#xff0c;不同行&#xff1b; 在Linux 下&#xff0c;查看命令释义如下 zhaocubuntu2004:~$ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FI…...

C语言-破解密码

题目描述 密码是我们生活中非常重要的东东&#xff0c;我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码&#xff0c;虽然简单但也安全。 假设老王原来一个BBS上的密码为zvbo941987,为了方便记忆&#xff0c;他通过一种算法把这个密码变换…...

ffmpeg 解码文件时的时间戳问题

实时流和普通文件 1 实时流 实时流编码时&#xff0c;我们一般不进行b帧编码&#xff0c;但是文件存储时为了减小大小&#xff0c;会增加b帧&#xff0c;实时流只带了I&#xff0c;P帧&#xff0c;那就会好很多 2 普通文件 很多文件带了b帧&#xff0c;所以要使用解码时间去同…...

Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架

在数字化采购领域&#xff0c;企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力&#xff0c;通过待办消息、招标公告、中标公告和信息发布等功能模块…...

[python]基于faster whisper实时语音识别语音转文本

语音识别转文本相信很多人都用过&#xff0c;不管是手机自带&#xff0c;还是腾讯视频都附带有此功能&#xff0c;今天简单说下&#xff1a; faster whisper地址&#xff1a; https://github.com/SYSTRAN/faster-whisperhttps://link.zhihu.com/?targethttps%3A//github.com…...

2023纠结中前行? 2024继续还是放下?

喝下2023年的第一口雪碧&#xff0c;没有想像中的那么期待&#xff0c;甜水&#xff0c;放弃吧&#xff1b;还是吃些水果吧&#xff0c;不行吃块肉、喝两口酒~ 关于生活 挣扎了10几年的一颗牙“终于“掉了&#xff0c;几个月时间都在为新牙努力着&#xff1b;”进了医院就不在…...

原型链补充

1.什么是原型对象 函数的独有属性,他用prototype来表示,可以在函数的prototype上挂载一些公用的属性和方法,供实例化对象来访问。 2.__proto__属性 这个属性每一个对象都有,实例化对象就是通过这个属性,来访问原型对象上的属性和方法的。 3.三者之间的关系 1.在构造函数的原型…...

《Linux Nano命令详解:小而强大的文本编辑器》

《Linux Nano命令详解&#xff1a;小而强大的文本编辑器》 引言&#xff1a; 在Linux系统中&#xff0c;文本编辑是开发和系统管理中不可或缺的一部分。虽然有许多强大的文本编辑器可供选择&#xff0c;但Nano以其简单易用、小巧灵活而备受喜爱。本文将深入探讨Nano命令&…...

系列四、Eureka自我保护

一、Eureka自我保护 1.1、故障现象 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式&#xff0c;Eureka Server将会尝试保护其服务注册表中的信息&#xff0c;不再删除服务注册表中的数据&#xff0c;也就是不会注销任何微服务。如…...

C++回调函数-实操(二)

回调通常通过函数指针、函数对象&#xff08;仿函数&#xff09;、Lambda 表达式或者 std::function 来实现。 1、函数指针实现回调 这一方法实现回调比较好记&#xff0c;就记住把函数当作参数传给方法&#xff0c;在方法中调用方法。 #include <iostream>// 回调函数…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...