Maven学习笔记

2018-03-12  本文已影响0人  THQ的简书

Maven概述

例如: Maven工程的默认结构(假定${basedir}表示工程目录)

配置项 默认值
源代码 ${basedir}/src/main/java
配置文件 ${basedir}/src/main/resources
测试文件 ${basedir}/src/test
打包的jar包 ${basedir}/target
编译后的文件(字节码文件) ${basedir}/target/classes

Maven环境配置

项目 要求
JDK Maven3.3要求JDK1.7或以上
Maven3.2要求JDK1.6或以上
Maven3.0/3.1要求JDK1.5或以上
内存 没有最低要求
磁盘 Maven自身安装大约10MB空间,除此之外,都是用来存放本地仓库的jar包,预期至少500MB
操作系统 没有最低要求
  1. 检查Java安装(JDK)
    打开操作系统的命令行,然后输入命令:java -version
  2. Java环境配置
操作系统 设置
Windows 环境变量 JAVA_HOME = Java的JDK安装目录,然后将JAVA_HOME添加到系统的环境变量Path后面
Linux export JAVA_HOME=/usr/local/java-current,然后export PATH=PATH:JAVA_HOME/bin/
Mac export JAVA_HOME=/Library/Java/Home
  1. 下载Maven文件
    http://maven.apache.org/download.html下载Maven3.2.5
  2. 解压并配置Maven环境变量
    解压文件,安装Maven3.2.5得到子目录apache-maven-3.2.5
操作系统 设置
Windows 使用系统属性设置环境变量
M2_HOME=C:\dictionary\apache-maven-3.2.5
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m -Xmx512m,然后添加“;%M2%”到Path变量后面
Linux 打开命令行设置环境变量
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
最后export PATH=M2:PATH
Mac 打开命令行设置环境变量
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export MAVEN_OPTS=-Xms256m -Xmx512m
最后export PATH=M2:PATH
  1. 验证Maven安装
    打开操作系统的命令行,然后输入命令:mvn -version

Maven仓库

构建配置文件

  1. 构建配置文件是一组配置的集合,用来设置或者覆盖Maven构建的默认配置,使用构建配置文件,可以为不同的环境定制构建过程,例如pro和dev环境。
  2. Profile在pom.xml中使用activeProfiles/profiles元素指定,而且可以用多种方式触发,Profile在构建时修改POM,并且为变量设置不同的目标环境,例如日志环境,kafka环境。

Maven POM

可继承的POM元素:

  1. groupId:项目组ID,项目坐标的核心元素
  2. version:项目版本,项目坐标的核心因素
  3. description:项目的描述信息
  4. organization:项目的组织信息
  5. inceptionYear:项目的创始年份
  6. url:项目的URL地址
  7. developers:项目的开发者信息
  8. contributors:项目的贡献者信息
  9. distributionManagement:项目的部署配置
  10. issueManagement:项目的缺陷跟踪系统信息
  11. ciManagement:项目的持续集成系统信息
  12. scm:项目的版本控制系统西溪
  13. malilingLists:项目的邮件列表信息
  14. properties:自定义的Maven属性
  15. dependencies:项目的依赖配置
  16. dependencyManagement:项目的依赖管理配置
  17. repositories:项目的仓库配置
  18. build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
  19. reporting:包括项目的报告输出目录配置、报告插件配置等

生命周期

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解:

  1. 顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义;
  2. 这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。

Maven有三套相互独立的生命周期

生命周期 描述
clean 在进行真正构建之前作一些清理工作
default(or build) 构建的核心部分,编译、测试、打包、部署等等
site 用来生成项目报告、站点、发布站点

注意:你可以仅仅调用clean来清理工作目录,也可以仅仅调用site来生成站点,也可以直接使用mvn clean install site完成这一套生命周期。

clean
当运行mvn clean时,clean生命周期一共包含了三个阶段:

阶段名称 描述
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作

注意:mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。

site

阶段名称 描述
pre-site 执行一些要在生成项目站点文档前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上

经常会用到site阶段和site-deploy阶段,用以生成和发布Maven站点,完成文档和统计数据自动生成。

default(or build)

阶段名称 描述
validate 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到
initialize 初始化构建状态,例如设置属性
generate-sources 生成编译阶段需要包含的任何源码文件
process-sources 处理源代码,例如过滤任何值
generate-resources 生成工程包中需要包含的资源文件
process-resources 拷贝和处理资源文件到目的目录中,为打包阶段做准备
compile 编译工程源码
process-classes 处理编译生成的文件,例如Java Class 字节码的加强和优化
generate-test-sources 生成编译阶段需要包含的任何测试源代码
process-test-sources 处理测试源代码,例如过滤任何值
test-compile 编译测试源代码到测试目录
process-test-classes 处理测试代码文件编译后生成的文件
test 使用适当的单元测试框架(例如JUnit)运行测试
prepare-package 在真正打包之前,为准备打包执行任何必要的操作
package 获取编译后的代码,并按照可发布的格式进行打包,例如JAR、WAR或者EAR文件
pre-integration-test 在集成测试执行之前,执行所需的操作。例如设置所需的环境变量
integration-test 处理和部署必须的工程包到集成测试能够运行的环境中
post-integration-test 在集成测试被执行后执行必要的操作。例如清理环境
verify 运行检查操作来验证工程包是有效的,并满足质量要求
install 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖
deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

注意:运行任何一个阶段,它前面的所有阶段都会被运行,这就是当我们运行mvn install时,代码会被编译、测试、打包的原因;而且,Maven的插件机制是完全依赖Maven的生命周期的。

Maven插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
    </configuration>
</plugin>

Maven版本管理

上一篇 下一篇

猜你喜欢

热点阅读