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

Maven POM 标签说明

Maven POM 标签完整参考手册


目录

  • 一、根标签
  • 二、项目基本信息
  • 三、父 POM 继承
  • 四、属性配置
  • 五、依赖管理
  • 六、模块管理
  • 七、构建配置
  • 八、分发管理
  • 九、仓库配置
  • 十、常用插件配置示例

一、根标签

标签说明示例
<project>POM 文件的根元素,所有配置都包裹在里面<project xmlns="...">
<modelVersion>POM 模型的版本,Maven 2/3 固定为 4.0.0<modelVersion>4.0.0</modelVersion>

二、项目基本信息

标签说明示例
<groupId>项目所属的组织/公司 ID,通常使用反转的域名<groupId>net.iuyy.agent</groupId>
<artifactId>项目的唯一标识符,也是构建产物的名称<artifactId>agent-core</artifactId>
<version>项目版本号,SNAPSHOT 表示快照版本<version>1.0-SNAPSHOT</version>
<packaging>打包方式,可选:pomjarwarearmaven-plugin<packaging>jar</packaging>
<name>项目的显示名称(可选)<name>Agent Core</name>
<description>项目描述(可选)<description>核心代理模块</description>
<url>项目主页 URL(可选)<url>http://www.iuyy.net</url>

三、父 POM 继承

标签说明示例
<parent>定义父 POM,继承其配置<parent>...</parent>
<parent>/<groupId>父项目的 groupId<groupId>net.iuyy.agent</groupId>
<parent>/<artifactId>父项目的 artifactId<artifactId>agent-platform</artifactId>
<parent>/<version>父项目的版本号<version>1.0</version>
<parent>/<relativePath>父 POM 的相对路径,默认../pom.xml,空值表示从仓库查找<relativePath>../pom.xml</relativePath>
<parent>/<relativePath/>空标签表示不从本地查找,直接去仓库<relativePath/>

四、属性配置

标签说明示例
<properties>定义可复用的属性变量<properties>...</properties>
<java.version>自定义属性,在 POM 中用${java.version}引用<java.version>17</java.version>
<project.build.sourceEncoding>源码编码<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>报告输出编码<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>编译源码的 Java 版本<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>编译目标 Java 版本<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.encoding>编译编码<maven.compiler.encoding>UTF-8</maven.compiler.encoding>

五、依赖管理

5.1<dependencies>- 直接依赖

标签说明示例
<dependencies>所有依赖的根容器<dependencies>...</dependencies>
<dependency>单个依赖项<dependency>...</dependency>
<dependency>/<groupId>依赖的组织 ID<groupId>org.springframework.boot</groupId>
<dependency>/<artifactId>依赖的构件 ID<artifactId>spring-boot-starter-web</artifactId>
<dependency>/<version>依赖的版本号<version>3.5.10</version>
<dependency>/<type>依赖的类型,默认jar<type>jar</type>
<dependency>/<scope>依赖作用域<scope>compile</scope>
<dependency>/<optional>是否可选依赖(不传递)<optional>true</optional>
<dependency>/<classifier>分类器,用于区分相同版本的不同构建<classifier>exec</classifier>
<dependency>/<exclusions>排除传递性依赖<exclusions>...</exclusions>
<dependency>/<exclusions>/<exclusion>单个排除项<exclusion>...</exclusion>

5.2<dependencyManagement>- 依赖版本管理

标签说明示例
<dependencyManagement>管理依赖版本,子模块继承但不会自动引入<dependencyManagement>...</dependencyManagement>
<dependencyManagement>/<dependencies><dependencies><dependencies>

5.3 Scope 作用域

Scope说明生效阶段
compile默认,所有阶段都可用编译、测试、运行
provided由 JDK 或容器提供,打包时不包含编译、测试
runtime运行时需要,编译时不需要测试、运行
test仅测试阶段需要测试
system系统本地路径,不推荐使用编译、测试
import仅用于 dependencyManagement,导入 BOM版本管理

六、模块管理(多模块项目)

标签说明示例
<modules>子模块列表容器<modules>...</modules>
<module>子模块的相对路径(目录名)<module>agent-core</module>

七、构建配置

7.1<build>基本结构

标签说明示例
<build>构建配置的根容器<build>...</build>
<build>/<finalName>构建产物的最终名称<finalName>agent-web</finalName>
<build>/<directory>构建输出目录,默认target<directory>target</directory>
<build>/<sourceDirectory>源码目录,默认src/main/java<sourceDirectory>src/main/java</sourceDirectory>
<build>/<testSourceDirectory>测试源码目录<testSourceDirectory>src/test/java</testSourceDirectory>
<build>/<outputDirectory>编译输出目录<outputDirectory>target/classes</outputDirectory>
<build>/<testOutputDirectory>测试编译输出目录<testOutputDirectory>target/test-classes</testOutputDirectory>

7.2<resources>- 资源文件

标签说明示例
<resources>资源列表容器<resources>...</resources>
<resource>单个资源配置<resource>...</resource>
<resource>/<directory>资源目录<directory>src/main/resources</directory>
<resource>/<includes>包含的文件模式<includes>...</includes>
<resource>/<excludes>排除的文件模式<excludes>...</excludes>
<resource>/<filtering>是否启用资源过滤(替换变量)<filtering>true</filtering>

7.3<plugins>- 插件配置

标签说明示例
<plugins>插件列表容器<plugins>...</plugins>
<plugin>单个插件配置<plugin>...</plugin>
<plugin>/<groupId>插件组织 ID<groupId>org.springframework.boot</groupId>
<plugin>/<artifactId>插件构件 ID<artifactId>spring-boot-maven-plugin</artifactId>
<plugin>/<version>插件版本<version>3.5.10</version>
<plugin>/<extensions>是否扩展 Maven 核心功能<extensions>true</extensions>
<plugin>/<configuration>插件配置参数<configuration>...</configuration>
<plugin>/<executions>插件执行目标<executions>...</executions>
<plugin>/<executions>/<execution>单个执行配置<execution>...</execution>
<execution>/<id>执行 ID<id>repackage</id>
<execution>/<goals>执行的目标列表<goals>...</goals>
<execution>/<goal>单个目标<goal>repackage</goal>
<execution>/<phase>绑定的生命周期阶段<phase>package</phase>
<execution>/<configuration>该执行的特定配置<configuration>...</configuration>

7.4<pluginManagement>- 插件版本管理

标签说明示例
<pluginManagement>管理插件版本,子模块继承但不会自动执行<pluginManagement>...</pluginManagement>
<pluginManagement>/<plugins><plugins><plugins>

八、分发管理

标签说明示例
<distributionManagement>分发配置<distributionManagement>...</distributionManagement>
<repository>发布仓库<repository>...</repository>
<snapshotRepository>快照仓库<snapshotRepository>...</snapshotRepository>
<site>站点部署配置<site>...</site>

九、仓库配置

标签说明示例
<repositories>远程仓库列表<repositories>...</repositories>
<repository>单个仓库<repository>...</repository>
<repository>/<id>仓库 ID<id>aliyun</id>
<repository>/<name>仓库名称<name>Aliyun Maven</name>
<repository>/<url>仓库地址<url>https://maven.aliyun.com/...</url>
<repository>/<snapshots>快照版本策略<snapshots>...</snapshots>
<repository>/<releases>正式版本策略<releases>...</releases>

十、常用插件配置示例

10.1 Spring Boot Maven Plugin

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><skip>false</skip><!-- 是否跳过 repackage --><mainClass>com.example.Application</mainClass><!-- 启动类 --><classifier>exec</classifier><!-- 生成带后缀的 jar --><jvmArguments><!-- JVM 参数 --><jvmArgument>-Dfile.encoding=UTF-8</jvmArgument></jvmArguments><systemPropertyVariables><!-- 系统属性 --><file.encoding>UTF-8</file.encoding></systemPropertyVariables><arguments><!-- 应用参数 --><argument>--server.port=8080</argument></arguments><excludes><!-- 排除依赖 --><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration><executions><execution><goals><goal>repackage</goal><!-- 重打包目标 --></goals></execution></executions></plugin>

10.2 Maven Compiler Plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><!-- 源码版本 --><target>17</target><!-- 目标版本 --><encoding>UTF-8</encoding><!-- 编码 --><compilerArgs><!-- 额外参数 --><arg>-parameters</arg><!-- 保留参数名 --><arg>-Xlint:unchecked</arg><!-- 警告级别 --></compilerArgs></configuration></plugin>

10.3 Maven Surefire Plugin(测试)

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests><!-- 跳过测试 --><includes><!-- 包含的测试类 --><include>**/*Test.java</include></includes><excludes><!-- 排除的测试类 --><exclude>**/*IntegrationTest.java</exclude></excludes><forkCount>4</forkCount><!-- 并行测试数 --><reuseForks>true</reuseForks><!-- 复用 fork --></configuration></plugin>

10.4 Maven Jar Plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><excludes><!-- 排除文件 --><exclude>**/application-dev.yml</exclude></excludes><archive><manifest><addClasspath>true</addClasspath><!-- 添加 Classpath --><mainClass>com.example.Application</mainClass><!-- 主类 --></manifest><manifestEntries><!-- 自定义 Manifest --><Implementation-Version>${project.version}</Implementation-Version></manifestEntries></archive></configuration></plugin>

10.5 Maven Source Plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><executions><execution><id>attach-sources</id><phase>package</phase><goals><goal>jar-no-fork</goal><!-- 生成源码 jar --></goals></execution></executions></plugin>
http://www.cnnetsun.cn/news/3237721.html

相关文章:

  • 从单兵到团队:用AI智能体协作框架构建高效自动化工作流
  • 3步免费获取国家中小学智慧教育平台电子课本PDF:教师必备的终极下载指南
  • SketchUp STL插件:3D打印工作流的终极解决方案
  • 空号检测能力综合评估:2026主流方案数据源覆盖度、识别准确率与实时响应速度梯队解读
  • 终极指南:快速解决ComfyUI-Impact-Pack FaceDetailer节点种子缺失问题
  • 怎样高效实现微信群消息智能转发:自动化同步完整指南
  • 【Qt初识】信号槽(二):自定义信号函数与槽函数
  • 微信群消息自动转发完整指南:3步实现跨群信息同步
  • 校招季消息发不完,如何告别重复邀约内耗
  • 多个 AI 怎么「开会不抢话」?AutoGen Group Chat 一文讲透
  • MambaDFuse 多模态图像融合实战:RTX 4090 双卡训练,8大指标超越SOTA
  • Python scikit-learn KMeans 与 ArcPy 结合:GIS面数据4属性聚类与3步自动化制图
  • 计算机毕业设计之旅游资源及线路管理系统
  • 2026零基础考试季课堂记录入门教程避坑详解包教包会可直接上手
  • 【IEEE出版、往届2.5个月检索、中山大学主办】第六届计算机科学与区块链国际学术会议(CCSB 2026)
  • 网站发布内容预检和网站巡查预警对运营管理有哪些要求?
  • 【油藏地球物理正演软件ColchisFM】地震剖面图片数值化地震数据——科吉思技术实战分享
  • 终极RPG Maker解密教程:5分钟学会提取加密游戏资源
  • 如何在Windows电脑上安装APK文件:APK安装器完整使用指南
  • 谷歌 Made By Google 发布会官宣!Pixel 11 彻底终结 128GB:为何 AI 时代“256GB 起步”成了硬红线?
  • 计算机毕业设计之旅游资源网站平台设计与实现
  • 店铺运营自动化,多款电商运营内容协作工具实操分享
  • PCA主成分分析1--(矿相定向重构、高效协同浸出)
  • 80后最累?错。是三股力同时砸在一代人身上|唤醒国人·建设性自述 v1.0
  • 反向海淘海外仓架构设计:解决国货出海集运仓储全链路核心挑战
  • 孩子记不住古诗知识点用什么App?适趣古诗词帮孩子先理解再记忆
  • RZ9692 实训平台通信系统构建:3步完成 PSK 调制解调与 8 时隙复用
  • 计算机毕业设计之猫咖管理系统
  • 消费者反映猫咪后腿瘫痪,伯纳天纯猫粮相关讨论引发关注
  • 2026年IT培训实力榜:业内公认TOP机构揭晓