Maven 是一种软件项目管理和理解工具;它基于项目对象模型(POM),从中央位置管理项目的构建、报告和文档,并帮助开发人员轻松管理依赖项并自动化构建过程。
1、简介
1.1、项目目录
Maven 使用约定优于配置的原则,提倡使用一个共同的标准目录结构。
目录 |
说明 |
${basedir} |
项目根目录,存放 pom.xml 和 所有的子目录 |
${basedir}/src/main/java |
java 源代码 |
${basedir}/src/main/resources |
资源目录 |
${basedir}/src/test/java |
测试代码 |
${basedir}/src/test/resources |
测试用的资源 |
${basedir}/src/main/webapp/WEB-INF |
web 应用目录 |
${basedir}/target |
打包输出目录 |
${basedir}/target/classes |
编译输出目录 |
${basedir}/target/test-classes |
测试编译输出目录 |
~/.m2/repository |
Maven 默认的本地仓库目录 |
1.2、生命周期
Maven 有三个标准的生命周期:
- clean:项目清理
- default(build):项目部署
- site:项目站点文档创建
每个生命周期又包含多个阶段。
1.2.1、clean 生命周期
生命周期阶段 |
说明 |
pre-clean |
执行一些需要在 clean 之前完成的工作 |
clean |
移除所有上一次构建生成的文件 |
post-clean |
执行一些需要在 clean 之后完成的工作 |
1.2.2、default(build) 生命周期
生命周期阶段 |
说明 |
validate(校验) |
校验项目是否正确,是否包含所有必要信息以完成项目的构建 |
initialize(初始化) |
初始化构建状态,比如设置属性值 |
generate-sources(生成源代码) |
生成用于编译阶段中的任何源代码 |
process-sources(处理源代码) |
处理源代码,比如说,过滤任意值 |
generate-resources(生成资源文件) |
生成将会包含在项目包中的资源文件 |
process-resources (处理资源文件) |
复制和处理资源到目标目录,为打包阶段最好准备 |
compile(编译) |
编译项目的源代码 |
process-classes(处理类文件) |
处理编译生成的文件,比如说对 Java class 文件做字节码改善优化 |
generate-test-sources(生成测试源代码) |
生成用于编译阶段中的任何测试源代码 |
process-test-sources(处理测试源代码) |
处理测试源代码,比如说,过滤任意值 |
generate-test-resources(生成测试资源文件) |
为测试创建资源文件 |
process-test-resources(处理测试资源文件) |
复制和处理测试资源到目标目录 |
test-compile(编译测试源码) |
编译测试源代码 |
process-test-classes(处理测试类文件) |
处理测试源码编译生成的文件 |
test(测试) |
使用合适的单元测试框架运行测试(如:Juint ) |
prepare-package(准备打包) |
在实际打包之前,执行任何的必要的操作为打包做准备 |
package(打包) |
将编译后的文件及资源文件打包成可分发格式的文件,如:JAR、WAR 或者 EAR 文件。 |
pre-integration-test(集成测试前) |
在执行集成测试前进行的必要动作,如:搭建需要的环境 |
integration-test(集成测试) |
部署项目到可以运行集成测试的环境中 |
post-integration-test(集成测试后) |
在执行集成测试完成后进行的必要动作,如:清理集成测试环境 |
verify (验证) |
运行任意的检查来验证项目包有效且达到质量标准 |
install(安装) |
安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖 |
deploy(部署) |
将最终的项目包复制到远程仓库,与其他开发者和项目共享 |
1.2.3、site 生命周期
生命周期阶段 |
说明 |
pre-site |
执行一些需要在生成站点文档之前完成的工作 |
site |
生成项目的站点文档 |
post-site |
执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 |
site-deploy |
将生成的站点文档部署到特定的服务器上 |
1.3、Maven 插件
Maven 每个生命周期中都包含着一系列的阶段(phase);这些 phase 相当于 Maven 提供的统一的接口,这些 phase的实现由 Maven 的插件来完成。我们在输入 mvn 命令的时候,比如 mvn clean,clean 对应的就是 clean 生命周期中的 clean 阶段。但是 clean 的具体操作是由 maven-clean-plugin 来实现的。所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:
插件通常提供了一个目标的集合,可以使用下面的语法执行:
mvn [plugin-name]:[goal-name]
例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:
mvn compiler:compile
常用插件:
插件 |
说明 |
clean |
清理目标文件,删除目标目录 |
compiler |
编译 Java 源文件 |
surefile |
运行 JUnit 单元测试,创建测试报告 |
jar |
构建 JAR 文件 |
war |
构建 WAR 文件 |
javadoc |
为工程生成 Javadoc |
1.4、仓库
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有 JAR、WAR、ZIP、POM 文件的地方。Maven 仓库有三种类型:本地(local)、中央(central)、远程(remote)。
1.4.1、本地仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。Maven 本地仓库目录默认为:%USER_HOME%/.m2/repository;要修改默认位置,可在 Maven 的 settings.xml 文件中设置另一个路径:
d:/repo
/>
1.4.2、中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的 Java项目依赖的构件都可以在这里下载到。中央仓库不需要配置,但需要通过网络才能访问。maven 社区提供了一个网站用来搜索浏览中央仓库的内容:https://central.sonatype.com/;通过该网站可以方便搜索查看相应的构件。
1.4.3、远程仓库
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
1.4.4、Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 会按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库。
步骤 3 - 如果没有设置远程仓库,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
2、安装
在官网(https://maven.apache.org/download.cgi)下载安装包并解压,然后配置环境变量即可;这里使用 3.8.8 版本安装部署。
2.1、Windows 安装
这里假设 Maven 的解压目录为:D:apacheapache-maven-3.8.8,新建用户变量 MAVEN_HOME:
编辑用户变量 Path,添加变量值:%MAVEN_HOME%bin
打开 cmd,检查安装是否成功:
C:Usersadmin>mvn -version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: D:apacheapache-maven-3.8.8
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: D:softJavajdk1.8.0_321jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
2.2、Linux 安装
这里假设 Maven 的解压目录为:/home/mongo/soft/apache-maven-3.8.8,编辑 ~/.bash_profile 设置环境变量:
export MAVEN_HOME=/home/mongo/soft/apache-maven-3.8.8
export PATH=$PATH:$MAVEN_HOME/bin
使配置生效:source ~/.bash_profile;然后检查安装是否成功:
app4:[/home/mongo] mvn -verion
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /home/mongo/soft/apache-maven-3.8.8
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /home/mongo/soft/jdk1.8.0_321/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
参考:https://www.runoob.com/maven/maven-tutorial.html。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: SQL SERVER case when的使用方法
一、case when的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 第一种 格式 : 简单Case函数 : 格式说明 case 列名 when 条件值1 then 选项1 when 条件值2 then 选项2……