Maven概念
目录布局
Maven创建项目,目录结构都是有标准的模板
目录 | 说明 |
---|---|
src/main/java | 应用程序的源代码的目录 |
src/main/resources | 项目的源文件所在的目录 |
src/main/filters | 资源筛选器文件 |
src/main/webapp | Web 应用程序源 |
src/test/java | 测试代码所在的目录, |
src/test/resources | 测试资源 |
src/test/filters | 测试资源筛选器文件 |
src/it | 集成测试(主要针对插件) |
src/assembly | 装配描述符 |
src/site | 网站 |
pom.xml | 核心配置文件,项目的描述文件 |
target | 项目构建的输出文件 |
LICENSE.txt | 项目许可证 |
NOTICE.txt | 项目所依赖的库所需的通知和归属 |
README.txt | 项目的读物 |
仓库
专门 存放Maven项目的位置
本地仓库
本地上的一个文件夹。首次应用会从远程仓库进行下载的,下次应用会在本地找,没有则下载远程
远程仓库
中央仓库
官方提供的仓库 ,也是 Macen的默认仓库
私服
局域网内架设私有的仓库服务器,用于提供外部远程仓库应用
配置本地仓库
在 根目录\conf\setting.xml
文件的 settings节点里 添加以下代码
我的本地存储位置在
D:\Maven\repository
<!-- 配置本地仓库 -->
<localRepository>D:\Maven\repository</localRepository>
配置远程仓库
Macen 默认仓库是 境外,下载速度慢、不便捷
于是我们选择使用 国内阿里云Macen仓库作为中央仓库镜像
在 根目录\conf\setting.xml
文件的 mirrors节点里 添加以下代码(更改为阿里云Macen仓库)
<!-- 配置阿里云镜像 -->
<mirror>
<!-- 镜像的唯一标识 -->
<id>nexus-aliyun</id>
<!-- 镜像名称 -->
<name>Nexus aliyun</name>
<!-- 镜像仓库 Maven地址 -->
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<!-- 配置是否为中央仓库镜像,如果是,则central -->
<mirrorOf>*</mirrorOf>
</mirror>
![](http://sanscan12.gitee.io/blogimg/Content/Maven/03.png)
核心文件pom.xml
POM是 Maven 工程的基本工作单元,是一个XML文件,包含 了项目的基本信息,用于描述项目如何构建,声明项目依赖
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
<project xmlns="http://Maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Maven.apache.org/POM/4.0.0
http://Maven.apache.org/xsd/Maven-4.0.0.xsd">
<!-- Maven模型的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如
com.companyname.project-group,Maven会将该项目打成的jar包放本地路
径:/com/companyname/project-group -->
<groupId>com.kkb.Maven</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>HelloWorld</artifactId>
<!-- 当前项目版本号:同一个项目开发过程中可以发布多个版本,此处标示0.0.1版 -->
<!-- 当前项目版本号:每个工程发布后可以发布多个版本,依赖时调取不同的版本,使用不同的版本号
当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本
-->
<version>0.0.1-snapshot</version>
<!--打包类型,一般有jar、war、pom等-->
<packaging>jar</packaging>
<!-- 名称:可省略 ,常用于 Maven 生成的文档。-->
<name>Hello</name>
<!--项目描述:可省略,常用于 Maven 生成的文档-->
<description></description>
<!-- 项目依赖构件配置,配置项目依赖构件的坐标 -->
<dependencies>
<!-- 依赖设置 ,可以有多个dependency节点-->
<dependency>
<!-- 依赖组织名称 -->
<groupId>junit</groupId>
<!-- 依赖项目名称 -->
<artifactId>junit</artifactId>
<!-- 依赖版本名称 -->
<version>4.12</version>
<!-- 依赖范围:test包下依赖该设置 -->
<scope>test</scope>
</dependency>
</dependencies>
<!-- 项目构建配置,配置编译、运行插件等。-->
<build>......</build>
</project>
坐标
Maven世界中有大量的构件,需要唯一标识的坐标就可以找到我们想要的坐标(其原理类似于平面几何中的坐标 x、y进行标识唯一位置的点)
Maven坐标组成部分:
groupId: 当前Maven项目组织名称
artifactId: 实际项目名称
version: 当前项目的版本 或 所依赖jar包的版本
生命周期
Maven拥有三套生命周期,他们相互独立互不干扰
clean 清理项目
阶段 | 说明 |
---|---|
pre-clean | 在实际项目清理之前执行所需的流程 |
clean | 删除上一个版本生成的所有文件 |
post-clean | 执行完成项目清洁所需的流程 |
default 构建项目(核心)
阶段 | 说明 |
---|---|
generate-resources | 生成资源以包含在包中 |
process-resources | 将资源复制并处理到目的地目录中,准备进行包装 |
compile | 编译项目的源代码 |
test-compile | 将测试源代码编译到测试目的地目录中 |
test | 使用合适的单位测试框架运行测试。这些测试不应要求对代码进行包装或部署 |
install | 将封装安装到本地存储库中,以用作本地其他项目的依赖 |
deploy | 在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享 |
··· | ··· |
注意:运行任何一个阶段的时候,它前面的所有阶段都会被运行
site 生成项目站点
阶段 | 说明 |
---|---|
pre-site | 在实际项目站点生成之前执行所需的流程 |
site | 生成项目的站点文档 |
post-site | 执行完成站点生成和准备站点部署所需的过程 |
site-deploy | 将生成的站点文档部署到指定的 Web 服务器 |