文档章节

Maven实战 读书笔记(三)

第五郎
 第五郎
发布于 2014/06/16 19:30
字数 1116
阅读 30
收藏 0
点赞 0
评论 0

Maven拥有三套相互独立的生命周期,分别为clean、default和site。
clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。

clean生命周期包含三个阶段:
    pre-clean执行一些清理需要完成的工作。
    clean清理上一次构建生成的文件。
    post-clean 执行一些清理后需要完成的工作。

default生命周期定义了真正构建时所需要执行的所有步骤,它是所有声明周期中最核心的部分,其包含的阶段如下:
    validate
    initialize
    generate-sources
    process-sources 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
    generate-resources
    process-resources
    compile 编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpaath目录中。
    process-classes
    generate-test-sources
    process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作,复制到项目输出的测试classpath目录中。
    generate-test-resources
    process-test-resources
    test-compile 编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
    process-test-classes
    test 使用单元测试框架运行测试,测试代码不会被打包或部署。
    prepare-package
    package 接受编译好的代码,打包成可发布的格式,如JAR。
    pre-integration-test
    post-integration-test
    verify
    install 将包安装到Maven本地仓库,共本地其他Maven项目使用。
    deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

site声明周期包含如下阶段:
    pre-site执行一些在生成项目站点之前需要完成的工作。
    site 生成项目站点文档。
    post-site 执行一些在生成项目站点之后需要完成的工作。
    site-deploy 将生成的项目站点发布到服务器上。

命令行与生命周期
    mvn clean:该命令调用clean生命周期的clean阶段。实际执行的结算为clean生命周期的pre-clean和clean阶段。
    mvn test:该命令调用default生命周期的test阶段。实际执行的阶段为default生命周期的validate、initialize等,直到test的所有阶段。
    mvn clean install:该命令调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行的阶段为clean生命周期的pre-clean、clean阶段,以及default生命周期的从validate至install的所有阶段。该命令结合了两个生命周期,在执行真正的项目构建之前清理项目是一个很好的实践。
    mvn clean deploy site-depoy:该命令调用clean生命周期的clean阶段、default生命周期的deploy阶段,以及site生命周期的site-deploy阶段,以及site生命周期的所有阶段。该命令结合了Maven所有三个生命周期,且deploy为default生命周期的最后一个阶段,site-deploy为site生命周期的最后一个阶段。

插件绑定
    内置绑定




自定义绑定

用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上

示例

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                    <!--配置一个id为attach-sources的任务,通过phrase配置,将其绑定到verify生命周期上,
                        再通过goals配置指定要执行的插件目标
                     -->
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

对于自定义绑定插件,用户总是应该声明一个非快照版本,这样可以避免由于插件版本变化造成的构建不稳定性。
了解插件目标的默认绑定阶段。运行命令如下:

mvn help:describe-Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1-Ddetail

插件配置
命令行插件配置
很多插件目标的参数都支持从命令行配置,用户可以在Maven命令中使用-D参数,并伴随一个参数键=参数值的形式,来配置插件目标的参数。
跳过测试:

mvn install -Dmaven.test.skip=true

POM中插件全局配置

示例

  <build>
        <plugins>
            <!--配置maven-compiler-plugin生成与JVM1.5兼容的字节码文件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


© 著作权归作者所有

共有 人打赏支持
第五郎
粉丝 9
博文 51
码字总数 28473
作品 0
南京
程序员
敏捷教练成长记:秋高气爽第四周

不知不觉坚持了四周了,这周很忙,写读书笔记时尽显疲态,有厌倦的感觉了。需要自我调整,继续坚持。 1、敏捷方面读不少于50页的书或者文章。 阅读《持续交付-发布可靠软件的系统方法》第三章...

转型实践者 ⋅ 2017/11/26 ⋅ 0

敏捷教练成长记:漫漫长路第三周

看到跆拳道的软文,讲到: 学跆拳道的正确顺序: 第一阶段:有兴趣 第二阶段:没兴趣 第三阶段:逼练习 第四阶段:成习惯 第五阶段:有兴趣 第六阶段:真热爱 大部分家长在孩子第二阶段时放弃...

转型实践者 ⋅ 2017/11/17 ⋅ 0

Maven实战读书笔记(8)

何为Maven的生命周期? 1、Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完善的、易扩展的生命周期 2、这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验...

祥林会跟你远走高飞 ⋅ 2014/12/16 ⋅ 0

优秀技术网址收集

Ruthless java多线程,java高级特性,Android基础,Android高级,Android常用控件,j2ee案例,Redis,Spring,javascript,Linux,Oracle,Ext,Hadoop,Jquery,Lucence,Nginx,Dubbo等 孤狼...

HenrySun ⋅ 2015/07/28 ⋅ 0

Maven实战读书笔记(7)

远程仓库的认证 1、一般来说,远程仓库无须认证就可以访问 2、但有时候出于安全考虑,需要提供认证信息,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名及密码 3、这时为了让Mav...

祥林会跟你远走高飞 ⋅ 2014/12/15 ⋅ 0

Maven实战读书笔记(9)

现代软件的现状 1、在这个技术飞速发展的时代,各类用户对软件的要求越来越高,软件本身也变得越来越复杂 2、因此,软件设计人员往往会采用各种方式对软件划分模块,以得到更清晰的设计及更高...

祥林会跟你远走高飞 ⋅ 2014/12/17 ⋅ 0

Maven实战读书笔记(5)

Maven编译、测试、运行会使用不同的classpath Maven再编译、测试、运行时会使用三套classpath (编译classpath、测试classpath、运行classpath) Maven有一下几种依赖范围 compile test provi...

祥林会跟你远走高飞 ⋅ 2014/12/12 ⋅ 0

Maven实战读书笔记(2)

Maven目录分析 通常在安装Maven时,都会设置M2HOME这个环境变量,M2HOME指代了Maven的安装目录,下面是目录结构: bin boot lib LICENSE.txt NOTICE.txt README.txt bin目录是? 1、该目录包...

祥林会跟你远走高飞 ⋅ 2014/12/11 ⋅ 0

Maven实战读书笔记(6)

Maven的坐标和依赖是?构件的逻辑表示方式和物理表示方式是? 1、坐标和依赖是任何一个构件在Maven世界中的逻辑表示方式 2、文件是Maven构件的物理表示方式 3、Maven通过仓库来统一管理这些文...

祥林会跟你远走高飞 ⋅ 2014/12/15 ⋅ 0

Maven实战读书笔记(16)

Maven聚合项目信息 1、Maven不仅仅是一个自动化构建工具和一个依赖管理工具,它还能够帮助聚合项目信息,促进团队间的交流 2、POM可以包含各种项目信息,如项目描述、版本控制系统地址、缺陷...

祥林会跟你远走高飞 ⋅ 2014/12/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部