1,介绍:
用来管理项目依赖和项目结构,约定优于配置,超级pom(maven-model-builder-3.5.4)里面默认配置了很多东西(java目录,编译目录...),用maven创建管项目就遵循maven的配置。
2,setting.xml(总配置文件):
- mirrors配置
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/mvn/view</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
- localRepository :本地仓库目录配置
- pluginGroups:插件配置,运行的时候不用写groupId和版本号。
- servers:私服设置
- profiles:切换环境配置。启动maven项目的时候可根据参数不同使用不同环境。
3,pom.xml标签介绍:
- groupId:公司域名
- artifactId:功能名
- version:版本号
- packaging:打包方式。
- properties:设置变量,(控制版本)
- dependencyManagement:只能出现在父pom中,用于统一版本号。如果直接放到dependencies里面,子项目引用父项目时会同时引用父项目所有jar包,dependencyManagement里面引用的jar,子项目需手动引入使用但不用写jar版本。
-
dependency:
- type:默认jar
- scope: 使用场景(什么时候使用这个jar,使用完之后会不会打包)。
- compile:默认会编译和打包;:打包不会有这jar,
- provided:仅仅使用这个jar用来编译,打包中不会再有这个文件(servlet包,运行环境tomcate中有这个jar了,但是编译时如果没有这个包则无法编译,则需要配置),
- runtime:运行时才需要(jdbc驱动:编译时使用jdbc接口就行,运行时才需要驱动实例);
- system:本地jar,中央仓库没有(自己修改过的jar,自己写的jar)
- 传递性:引用一个项目时,会自动引入改项目的所有引用jar,这就是传递依赖。maven_项目的依赖、聚合、继承
。 这样结构的项目比较好,不会重复冗余引用。一般项目的结构如下: - 查看pom文件的依赖信息命令:mvn dependency:tree>d.txt。
- 依赖仲裁:
- 版本顺序:依赖版本的就近依赖: jar版本由最近项目指定的为准。(最短路径原则)
- 加载先后:按照pom文件中的先后顺序加载。
- 可以用exclusions标签去除传递依赖,解决版本冲突问题,排除包。
4,maven生命周期:
没太搞懂,生命周期有三个阶段:clean、default、site。每个阶段由多个Phases组成,每个phases由多个插件goals组成。