【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.0
com.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
上一篇:【Maven】依赖、继承、聚合
下一篇:【Python】词频统计

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月19日 12时42分59秒