尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

maven的pom.xml文件(引入内嵌tomcat、servlet)

maven的pom.xml文件(引入内嵌tomcat、servlet)
📅 发布时间:2026/6/20 6:30:52

xml

可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。

pom.xml

POM(Project Object Model,项目对象模型)是Maven项目的核心配置文件,定义了项目的基本信息、依赖关系、构建配置等。

Maven工作原理:

  1. 读取pom.xml文件获取项目配置
  2. 解析依赖关系并下载所需库文件
  3. 执行生命周期阶段和绑定的插件目标
  4. 完成项目的清理、编译、测试、打包等任务

POM继承机制:

  • 子POM继承父POM的配置
  • 可以覆盖父POM中的配置项
  • 实现配置复用和标准化

Maven生命周期:

  1. clean - 清理项目
  2. default - 构建项目核心生命周期
  3. site - 生成项目站点文档

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.kihyou</groupId><artifactId>jweq</artifactId><version>1.0.0-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>25</maven.compiler.source><maven.compiler.target>25</maven.compiler.target><tomcat.version>11.0.15</tomcat.version></properties><dependencies></dependencies><build><finalName>${project.artifactId}-${project.version}</finalName><plugins></plugins></build>
</project>
1. <?xml ?>
  • xml version: 指定xml版本。文件中指定xml版本为1.0.0。
  • encoding: 指定编码。文件中指定使用UTF-8 编码。
2. <project></project>
  • project:整个项目的根元素,包含了整个项目的所有配置信息。

  • xmlns:xml name space,xml命名空间,声明默认的xml命名空间(xmlns),确保 Maven 能正确解析 POM 文件中的元素。文件中遵循Maven POM 4.0.0规范。

  • xmlns:xsi:xsi,XML Schema Instance,XML Schema实例,声明xmlns中 xml schema instance(xsi)的命名空间,用于支持 XML Schema 验证的基础设施,以允许使用xsi:schemaLocation 等属性进行 Schema 验证。

  • xsi:schemaLocation:Schema 位置,指定xsi中 XML Schema 文件的位置,命名空间URI Schema文件URL 的配对形式。文件中
    第一个URL:http://maven.apache.org/POM/4.0.0 - 命名空间标识
    第二个URL:http://maven.apache.org/xsd/maven-4.0.0.xsd - 对应的 Schema 文件位置

  • modelVersion指定了当前POM模型的版本。"4.0.0",表示使用Maven 2/3/4的POM格式

  • 项目坐标信息,用于唯一标识一个Maven项目。

    坐标作用:
    - 唯一标识项目;
    - 支持依赖管理和传递;
    - 实现项目发布和共享.

    Maven坐标系统由以下元素组成:

    1. groupId:组织或公司标识,定义了项目所属的组ID:

      • 命名规范:确保全球唯一性;通常使用反向域名表示法(例如:com.company.project)。
      • 作用:标识项目的归属组织;组织和分类相关项目;避免命名冲突。
    2. artifactId:项目或模块标识,定义了项目构件ID:

      • 命名规范:使用小写字母和连字符;避免特殊字符;应该唯一(在同一groupId下)
      • 作用:标识具体的项目或模块;作为生成文件的名称基础;在依赖中引用项目。
    3. version:项目版本号,定义了项目的版本号:

      • 版本号规范:采用语义化版本控制(SemVer);格式:主版本号.次版本号.修订号(例如:1.0.0, 2.1.3-SNAPSHOT)。
      • SNAPSHOT版本:表示开发中的不稳定版本,Maven会定期检查更新,适用于持续集成环境。
    4. packaging:打包类型(可选,默认为jar),定义了项目的打包方式:
      常见打包类型:1. jar:Java应用程序库;2. war:Web应用程序归档;3. pom:聚合项目或父项目;4. ear:企业级应用程序

  • properties:定义项目属性变量。

    	属性作用:1. 避免重复配置;2. 统一版本管理;3. 简化配置维护;4. 支持条件配置使用方式:在其他地方通过${property.name}引用(例如:${project.build.sourceEncoding})
    
    • project.build.sourceEncoding:定义项目构建时使用的字符编码

    • maven.compiler.source:定义源代码的Java版本

    • maven.compiler.target:定义目标JVM的版本

    • tomcat.version:定义内嵌Apache Tomcat的版本

编码一致性要求:
1. 文件保存编码
2. 编译器编码设置
3. 运行时编码设置
4. 数据库存储编码

  • dependencies:定义项目的依赖关系。
    依赖坐标:

    1. groupId:依赖库的组织标识;
    2. artifactId:依赖库的构件标识;
    3. version:依赖库的版本号;
    4. scope:依赖的作用域(可选)。

    依赖管理机制:1. 自动下载和管理第三方库;2. 解决依赖传递和冲突;3. 支持多种作用域;4. 实现依赖复用。

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.kihyou</groupId><artifactId>jweq</artifactId><version>1.0.0</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>25</maven.compiler.source><maven.compiler.target>25</maven.compiler.target><tomcat.version>11.0.15</tomcat.version></properties><dependencies><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.1.0</version><scope>provided</scope></dependency><dependency><groupId>jakarta.servlet.jsp</groupId><artifactId>jakarta.servlet.jsp-api</artifactId><version>4.0.0</version><scope>provided</scope></dependency></dependencies><build><finalName>${project.artifactId}-${project.version}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><release>25</release><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.3.1</version><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><mainClass>com.kihyou.Main</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.5.0</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.kihyou.Main</mainClass></transformer></transformers><minimizeJar>false</minimizeJar><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude><exclude>module-info.class</exclude><exclude>META-INF/MANIFEST.MF</exclude><exclude>META-INF/LICENSE</exclude><exclude>META-INF/LICENSE.txt</exclude><exclude>META-INF/LICENSE.md</exclude><exclude>META-INF/NOTICE</exclude><exclude>META-INF/NOTICE.txt</exclude><exclude>META-INF/NOTICE.md</exclude><exclude>META-INF/DEPENDENCIES</exclude><exclude>META-INF/web-fragment.xml</exclude></excludes></filter></filters></configuration></execution></executions></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>3.1.0</version><configuration><mainClass>com.kihyou.Main</mainClass></configuration></plugin></plugins></build>
</project>

本文来自博客园,作者:木氷,转载请注明原文链接:https://www.cnblogs.com/kihyou/p/19381070

相关新闻

  • 工业相机CMOS和CCD传感器怎么选?
  • 大数据技术栈的简要搭建理解
  • 国内混合机五大领先企业综合测评!探秘优质混料机设备技术创新与服务体系 - 速递信息

最新新闻

  • 告别经典游戏兼容性问题:DDrawCompat的智能解决方案
  • 供应链攻击深度剖析:从CVE-2026-8398事件看软件分发安全与防御
  • 2026年洛阳市PMP培训机构哪家好?官方授权R.E.P.报考指南 - 众智商学院课程中心
  • LPC229x ARM7微控制器深度解析:多路CAN、Flash编程与稳定性设计
  • HTTPLeaks:单文件Web安全靶场与浏览器信息泄露原理剖析
  • 嵌入式指令压缩技术:MPC562/564硬件解压原理与工程实践

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号