Clean,Install,Package,Deploy的区别

小课堂

分享人:郭伟杰

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

maven的用途:

1.maven是一个项目构建和管理的工具,提供了帮助管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

2.maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性

3.利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等

maven的核心概念介绍

1.Pom

2.Artifact

3.Repositories

4.Build Lifecycle

5.Goal

2.知识剖析

maven的生命周期

1.maven的生命周期就是对所有构建过程抽象与统一

2.生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的过程

3.maven有三套相互独立的生命周期,而初学者一般都会将maven的生命周期看成一个整体

CleanLifecycle(清理生命周期): 在进行真正的构建之前进行一些清理工作

(1)pre-clean:执行一些需要在clean之前完成的工作

(2)clean:移除所有上一次构建生成的文件

(3)post-clean:执行一些需要在clean之后立刻完成的工作

DefaultLifecycle(部署生命周期)构建的核心部分,编译,测试,打包,部署等等。

(1)compile:编译项目的源代码

(2)test:使用合适的单元测试框架运行测试。

(3)package:将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR

(4)install:安装包至本地仓库,以备本地的其它项目作为依赖使用

(5)deploy:复制最终的包至远程仓库,共享给其它开发人员和项目

SiteLifecycle(生成生命周期)生成项目报告,站点,发布站点。

(1)pre-site:执行一些需要在生成站点文档之前完成的工作

(2)site:生成项目的站点文档

(3)post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

(4)site-deploy:将生成的站点文档部署到特定的服务器上

3.常见问题

1.maven package install deploy区别

2:mvn clean install 与 mvn install 的区别

4.解决方案

1.maven package:打包(jar等)到本项目的target下

maven install:把target下打的包(jar等)安装到本地仓库,可以供其他项目使用

maven deploy:将打包的文件发布到远程参考,提供其他人员进行下载依赖

2.用mvn install后,新改的内容不生效,一定要后来使用mvn clean install 才生效

maven在执行一个生命周期的命令的是时候将会执行之前的所有生命周期操作,比如执行mvn install,会执行前面一系列的动作包括 compile , package , test 等

而执行mvn package 会调用 maven-jar-plugin 这个插件进行打包

理论上来讲不做mvn clean得到的jar包应该是最新的,然而在打包结束后修改了代码内容,导致打出来的jar包没有更新,从而没有生效

所以使用mvn clean install对target文件清除后再进行打包

5.编码实战

6.扩展思考

有时候会根据需求,要跳过某些阶段。比如有时在打包过程中由于单元测试中任何一条没通过,maven就会终止后续的工作,所以这个时候我们需要跳过测试阶段

7.参考文献

参考一:http://www.trinea.cn/android/maven/

参考二:http://blog.csdn.net/moshenglv/article/details/52027085

8.更多讨论

欢迎大家交流和讨论

鸣谢

感谢大家观看

BY : 郭伟杰