maven-笔记

Maven - 构建生命周期

什么是构建生命周期

构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序。这里的阶段是生命周期的一部分。
举例说明,一个典型的 Maven 构建生命周期是由以下几个阶段的序列组成的:

    prepare-resources    资源拷贝    本阶段可以自定义需要拷贝的资源
    compile    编译    本阶段完成源代码编译
    package    打包    本阶段根据 pom.xml 中描述的打包配置创建 JAR / WAR 包
    install    安装    本阶段在本地 / 远程仓库中安装工程包

一个目标是一个明确的任务,它可以作为单独的目标运行,或者作为一个大的构建的一部分和其它目标一起运行。一个目标是Maven中的一个“工作单元(unit of work)”。目标的例子包括Compiler插件中的compile目标,它用来编译项目中的所有源文件,或者Surefire插件中的test目标,用来运行单元测试。

注意:
当提到一个插件目标的时候,我们常常用速记符号:pluginId:goalId。例如,当提到Archetype插件的create目标的时候,我们写成archetype:create。

archetype 是插件
create 是目标

当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标。Maven 有以下三个标准的生命周期:
clean
default(or build)
site

Default (or Build) 生命周期
这是 Maven 的主要生命周期,被用于构建应用。包括下面的 23 个阶段。

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

Maven - 插件

Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:
创建 jar 文件
创建 war 文件
编译代码文件
代码单元测试
创建工程文档
创建工程报告
插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
mvn [plugin-name]:[goal-name]

常用插件的列表:
插件    描述
clean    构建之后清理目标文件。删除目标目录。
compiler    编译 Java 源文件。
surefile    运行 JUnit 单元测试。创建测试报告。
jar    从当前工程中构建 JAR 文件。
war    从当前工程中构建 WAR 文件。
javadoc    为工程生成 Javadoc。
antrun    从构建过程的任意一个阶段中运行一个 ant 任务的集合。

常见插件介绍
http://shmilyaw-hotmail-com.iteye.com/blog/2170300
http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html

外部依赖
工程依赖一个本地的jar,那么可以选择将该jar放到系统工程的src/lib下,那么在pom文件中可以如下:

      <dependency>
             <groupId>ldapjdk</groupId>
             <artifactId>ldapjdk</artifactId>
             <scope>system</scope>
             <version>1.0</version>
             <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
          </dependency>
外部依赖(library jar location)能够像其他依赖一样在 pom.xml 中配置。
指定 groupId 为 library 的名称。
指定 artifactId 为 library 的名称。
指定作用域(scope)为系统。
指定相对于工程位置的系统路径。

依赖范围
传递依赖发现可以通过使用如下的依赖范围来得到限制:
范围 描述
compile 编译阶段 该范围表明相关依赖是只在工程的类路径下有效。默认取值。
provided 供应阶段 该范围表明相关依赖是由运行时的 JDK 或者 网络服务器提供的。
runtime运行阶段 该范围表明相关依赖在编译阶段不是必须的,但是在执行阶段是必须的。
test 测试阶段 该范围表明相关依赖只在测试编译阶段和执行阶段。
system 系统阶段 该范围表明你需要提供一个系统路径。
import 导入阶段 该范围只在依赖是一个 pom 里定义的依赖时使用。同时,当前工程的POM 文件的 部分定义的依赖关系可以取代某特定的 POM。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值