POM
Project Object Model:项目的属性、依赖、构建配置这些信息都被抽象到项目对象(POM)里面。
POM组成
-项目基本信息:groupId:artifactiId:packaging:version
-构建环境
-POM关系
-构建设置
插件与目标
使用命令:pluginId:goalId,例如mvn archetypr:generate
常用插件:
maven-archetype-plugins
maven-dependency-plugin
maven-help-plugin
maven-resources-plugin
maven-surefire-plugin:执行单元测试
jetty-maven-plugin:
maven-enforcer-plugin
项目的生命周期阶段
maven中项目的生命周期是指项目的构建过程,它包含了一系列的有序的阶段,而一个阶段就是构建过程中的一个步骤。
插件目标可以绑定到生命周期阶段上,一个生命周期阶段可以绑定多个插件目标。
依赖管理
依赖范围scope
compile(编译范围)
provided(已提供范围)
runtime(运行时范围)
test(测试范围)
system(系统范围)
仓库依赖
存放所有依赖的仓库,通过依赖目标的坐标进行管理
maven仓库
在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。(仓库就是存放依赖和插件的地方),任何的构件都有唯一的坐标,Maven根据这个坐标定义了构件在仓库中的唯一存储路径。分类:可分为本地仓库和远程仓库,其中远程仓库又可分为中央仓库、私服、其他公共库.
-本地仓库
在本地安装Maven后,在安装目录下settings.xml中配置本地仓库地址
<settings>
<localRepository>D:\maven_new_repository</localRepository>
</settings>
-远程仓库
-中央仓库
中央仓库是默认的远程仓库,maven在安装的时候,自带的就是中央仓库的配置。中央仓库在超级POM中配置,所有的maven项目都会继承超级POM
<repository>
<id>central</id>
<name>Central Repository</name>
<url>http://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
-私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构件上传到私服上。
当前主流的maven私服:
1.Apache的Archiva
2.JFrog的Artifactory
3.Sonatype的Nexus
远程仓库的配置
在pom.xml文件中< repositories>< / repositories>中可以配置多个远程仓库,有时我们要对远程仓库的访问进行认证,一般将认证信息配置在settings.xml中,做如下配置,其中< id>< /id>必须与POM中需要认证的的repository元素的Id一致。
<servers>
<server>
<id>same with repository id in pom</id>
<username>username</username>
<password>pwd</password>
</server>
</servers>
如何将生成的项目部署到远程仓库
完成这项工作,也需要在POM中进行配置,这里有新引入了一个元素:< distributionManagement>
distributionManagement包含了2个子元素:repository和snapshotRepository, 前者表示发布版本构件的仓库,后者表示快照版本的仓库
这两个元素都需要配置 id(该远程仓库的唯一标识),name,url(表示该仓库的地址)
向远程仓库中部署构件,需要进行认证。配置如下:
<servers>
<server>
<id>same with repository id in pom</id>
<username>username</username>
<password>pwd</password>
</server>
</servers>