
【Maven】POM基本概念
发布日期:2021-05-09 00:57:51
浏览次数:10
分类:博客文章
本文共 13121 字,大约阅读时间需要 43 分钟。
目前的技术在开发中存在的问题:
一个项目就是一个工程
如果项目非常庞大,就不适合继续使用 package 来划分模块。最好是每一个模块对应一个工程,利于分工协作。借助于 Maven 就可以将一个项目拆分成多个工程。创建父工程(pom.xml)统一管理依赖,其他子模块继承该父工程即可;需要合并时,使用聚合,将各个子模块聚合到一起即可。
注意:如果不用 Maven 需要调用另一个项目中的一些类,则需要把那个项目打成 jar 包,然后引入该 jar 包,很麻烦。项目中需要的 jar 包必须手动“复制”、“粘贴”到 WEB-INF/lib 目录下
带来的问题是:同样的 jar 包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助 Maven,可以将 jar 包仅仅保存在“仓库”中,有需要使用的工程“引用”这个文件接口,并不需要真的把 jar 包复制过来。注意:Maven 所有包都集中下载到本地仓库中,而在项目中的包只是引用本地仓库中的包,项目中并没有下载任何实质上的包,这就节省了很多空间。
- jar 包需要别人替我们准备好,或到官网下载不同技术的官网提供 jar 包下载的形式是五花八门的。有些技术的官网就是通过 Maven 或 SVN 等专门的工具来提供下载的。如果是以不规范的方式下载的 jar 包,那么其中的内容很可能也是不规范的。借助于 Maven 可以以一种规范的方式下载 jar 包,因为所有知名框架或第三方工具的 jar 包以及按照统一的规范存放在了 Maven 的中央仓库中。以规范的方式下载的 jar 包,内容也是可靠的。
一个 jar 包依赖的其他 jar 包需要自己手动加入到项目中。
类比:如高等数学的学习,依赖于初等数学的知识,如果没有初等数学的知识,我们就不会用高等数学。
Maven
Maven 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
常用的用途:我们只需要写出包的一些信息,它就可以帮我们自动导入所需要的 jar 包。
如果多个人参与项目,那么他们上传的包基本上都是重复的,这样会很浪费空间,所以 Maven 就可以将我们的包集中起来到局域网上的私服仓库中进行管理,避免上传的包过多的冗余,如果需要用到包,去仓库里面找就行了。
POM( Project Object Model,项目对象模型) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
类比:DOM(Document Object Model,文档对象模型)
pom.xml 对于 Maven 工程是核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
坐标
数学中的坐标:
- 在平面上,使用 X、Y 两个向量可以唯一的定位平面中的任何一个点。
- 在空间中,使用 X、Y、Z 三个向量可以唯一的定位空间中的任何一个点。
Maven 的坐标:GAV
使用下面三个向量在仓库中唯一定位一个 Maven 工程- groupid:公司火组织域名倒序 + 项目名
- artifactid:模块名
- version:版本
com.nemo.maven Hello 1.0.0
4.0.0 com.companyname.project-group project 1.0
所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。
节点 | 描述 | 备注 |
---|---|---|
project | 工程的根标签。 | |
modelVersion | 模型版本 | 一般需要设置为 4.0。 |
groupId | 这是工程组的标识。它在一个组织或者项目中通常是唯一的。 | 例如,一个银行组织 com.companyname.project-group 拥有所有的和银行相关的项目。 |
artifactId | 这是工程的标识。它通常是工程的名称。 | 例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。 |
version | 这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。 | 例如:com.company.bank:consumer-banking:1.0com.company.bank:consumer-banking:1.1 |
POM 标签大全详解
这个太长了。。大家酌情观看。
4.0.0 asia.banseon banseon-maven2 jar 1.0-SNAPSHOT banseon-maven http://www.baidu.com/banseon A maven project to study maven. jira http://jira.baidu.com/banseon Demo banseon@126.com banseon@126.com banseon@126.com http:/hi.baidu.com/banseon/demo/dev/ HELLO WORLD banseon banseon@126.com Project Manager Architect demo http://hi.baidu.com/banseon No -5 Apache 2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo A business-friendly OSS license scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon ...... ...... Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ ...... ...... ...... ...... ...... ...... banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default ...... org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true ...... banseon-maven2 banseon maven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2 Snapshot Repository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site business api website scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月19日 12时42分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在 Azure 上执行一些简单的 python 工作
2021-05-09
WinUI 3 Preview 3 发布了,再一次试试它的性能
2021-05-09
使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)
2021-05-09
List数组排序
2021-05-09
VMware vSphere 离线虚拟机安装 BIND 9
2021-05-09
说说第一份工作
2021-05-09
dojo/request模块整体架构解析
2021-05-09
dojo/aspect源码解析
2021-05-09
Web性能优化:What? Why? How?
2021-05-09
Javascript定时器学习笔记
2021-05-09
dojo的发展历史
2021-05-09
Liunx百宝箱(Centos补充)
2021-05-09
Python存储系统(Redis)
2021-05-09
C语言指针收藏
2021-05-09
.net 4种单例模式
2021-05-09
T4 生成数据库实体类
2021-05-09
C#搞个跨平台的桌面NES游戏模拟器
2021-05-09
手把手教你安装Eclipse最新版本的详细教程 (非常详细,非常实用)
2021-05-09
《带你装B,带你飞》pytest成魔之路4 - fixture 之大解剖
2021-05-09
互联网App应用程序测试流程及测试总结
2021-05-09