发表于: 2017-02-07 23:54:00
5 2017
一.今天学习maven中的pom.xml详解,看了很多文档,基本上可以理解,然后用自己的话重新描述出来
pom.xml文件是Maven进行工作的主要配置文件(是否可以简单类比理解为”属性”?就是说pom.xml里面包含了很多关于项目的属性,我们可以通过修改它影响整个项目)。在这个文件中我们可以配置Maven项目的groupId、artifactId和version等Maven项目必须的元素;可以配置Maven项目需要使用的远程仓库;可以定义Maven项目打包的形式;可以定义Maven项目的资源依赖关系等等。对于一个最简单的pom.xml的定义必须包含modelVersion、groupId、artifactId和version这四个元素,当然这其中的元素也是可以从它的父项目中继承的。
maven中的项目和实际的项目不是一一对应的,一般项目在maven中会被分解成很多个模块
maven中pom中包含很多标签
声明标签的描述一般夹在两个<>中间
<project……>:根元素,包含一些约束的信息
<modelVersion>声明项目描述符遵循哪一个POM模型版本,一般是固定的,也是必须的元素。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性.
接下来几个元素声明坐标信息:
<groupId>:主项目标识(一般和包名一样)反写的公司网址+项目名
<artifactId>: 构件的标识符,项目名+模块名
<version>:当前项目的版本号,例如LOL项目的几点几版本
比如:0.0.1
第一个0表示大版本号
第二个0表示分支版本号
第三个0标识小版本
snapshot快照alpha内测beta公测Release稳定GA正式发布
<packaging>打包方式,默认是jar,另外还有war zip pom
<name>:项目描述名, Maven产生的文档用
<url>项目主页的URL/项目的地址 Maven产生的文档用(不太理解什么意思)
<description>项目描述
<developers>:开发人员列表
<licenses>:许可证信息
<organization>:组织信息
<properties>是为pom定义一些常量,在pom中的其它地方可以直接引用。
比如声明了<file.encoding>UTF-8</file_encoding>,那么在其他地方用
${file.encoding}即可得到UTI-8
还有比较重要的<dependencies>依赖列表,里面包括一些依赖项<dependency>通过在<dependency>里设置坐标(包括groupId,artifactId,version,type,scope等)来指定依赖位置
其中,type: 依赖类型,默认类型是jar;
scope: 指依赖范围,用来控制依赖与三种classpath的关系
<dependencyManagement>依赖管理,也可以声明依赖列表,里面包含多个依赖,但是不会被运行,这个标签主要是定义在父模块中,给子模块继承使用,
<build>为构件行为提供支持,
包含<plugins>插件,里面可以包含多个,
<parent>父项目的坐标。里面需要包含坐标信息
<modules>聚合,指定多个模块一起进行编译
maven中三种classpath:编译,运行,测试
依赖传递:A依赖B,B依赖C,这时可以说A依赖C,这就是依赖传递
依赖冲突时,遵循两条原则
1.短路优先
2.先声明先优先,按照<dependency>中设置依赖坐标的先后来判定优先
maven中聚合和继承:先新建一个项目,将它的packaging该为pom,然后使用modules标签将需要聚合的项目加入,就可以将这些项目聚合起来一起运作
二.明天计划:
1.在Eclipse中实操代码设置pom,把上面的内容都试一试
2.继续学习spring
评论