项目管理工具maven
1.maven介绍
1.1 maven是什么
1.2 什么是项目构建
1.2.1传统的项目构建
1.2.2maven项目构建过程
1.3 什么是依赖管理
1.3.1传统项目的依赖管理
1.3.2maven项目的依赖管理
1.4 使用maven的好处- maven安装
2.1 下载安装
2.2 环境变量配置
2.3 maven仓库
2.3.1maven仓库的作用
2.3.2配置本地仓库
2.3.3全局setting与用户setting - 生命周期
3.1三套生命周期
3.2生命周期的阶段
3.3命令与生命周期的阶段 - 常用Maven命令
4.1compile
4.2test
4.3package
4.4install - Myeclipse插件安装配置(eclipse)
5.1 Myeclipse(eclipse)与maven
5.2 插件安装
5.3指定maven安装目录
5.4user setting配置
5.5Myeclipse(eclipse)浏览仓库 - 新建Maven项目
1.Maven介绍
-
1.1maven是什么
-
maven翻译为“专家”,“内行”。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理
1.2什么是项目构建
- 项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程 1.2.1传统的项目构建
-
传统的使用eclipse构建项目的过程如下:
构建过程如下:
-
1)在eclipse中创建一个java web工程
2)在工程中编写源代码及配置文件等
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
1.2.2maven项目构建过程
- maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段
-
上图中部分阶段对应命令如下:
①清理阶段对应maven的命令是clean,清理输出的class文件
②编译阶段对应maven的命令是compile,将java代码编译成class文件。
③打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包
1.3什么是依赖管理
- ①什么是依赖?一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。 举个例子:一个crm系统,它的架构是SSH框架,该crm项目依赖SSH框架,具体它依赖的Hibernate、Spring、Struts2
- ②什么是依赖管理?就是对项目所有依赖的jar包进行规范化管理。 1.3.1传统项目的依赖管理
- 传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将Hibernate、struts2、spring(或是其他框架)的jar添加到工程中的WEB-INF/lib目录下。
-
-
手工拷贝jar包添加到工程中的问题是:
①没有对jar包的版本统一管理,容易导致版本冲突。
②从网上找jar包非常不方便,有些jar找不到。
③jar包添加到工程中导致工程过大。
1.3.2maven项目的依赖管理
-
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图
1.4使用maven的好处
- 通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区域,maven有如下的好处:
- ①一步构建
- ②依赖管理
- ③maven的跨平台,可以在window、linux上使用
- ④maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本
2.Maven安装
-
2.1下载安装
-
①下载
从该网站 http://maven.apache.org/download.cgi 下载
②解压
将maven解压到一个不含有中文和空格的目录中
bin目录 mvn.bat (以run方式运行项目)、 mvnDebug.bat(以debug方式运行项目 )
boot目录 maven运行需要类加载器
conf目录 settings.xml 整个maven工具核心配置文件
2.2环境变量的配置
- 计算机上需安装java环境,安装JDK1.7 + 版本 (将JAVA_HOME/bin 配置环境变量path )
-
①配置 MAVEN_HOME
-
②将 %MAVEN_HOME%/bin 加入环境变量 path
- ③通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.3.9及java版本为1.7即为安装成功。
-
-
2.3.1maven仓库的作用
maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了
下图描述了maven中仓库的类型:
本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
默认本地仓库位置在 user.dir/.m2/repository, {user.dir}表示windows用户目录。
远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内
中央仓库 :在maven软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。 -
2.3.2配置本地仓库
找到maven解压目录–conf/settings.xml–打开,找到如下位置
加入自定义的仓库路径
-
2.3.3全局setting与用户setting
maven仓库地址、私服等配置信息需要在setting.xml文件中配置,分为全局配置和用户配置
在maven安装目录下的有 conf/setting.xml文件,此setting.xml文件用于maven的所有project项目,它作为maven的全局配置
如需要个性配置则需要在用户配置中设置,用户配置的setting.xml文件默认的位置在: user.dir/.m2/settings.xml目录中, {user.dir} 指windows 中的用户目录。
maven会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件
3.Maven的生命周期
-
3.1三套生命周期
-
maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
①clean lifecycle在进行真正的构之前进行一些清理工作
②default lifecycle构建的核心部分,编译,测试,打包,部署等等
③site lifecycle生成项目报告,站点,发布站点
3.2生命周期的阶段
-
每个生命周期都有很多阶段,每个阶段对应一个执行命令。
①如下是clean生命周期的阶段
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
②如下是default周期的内容:
validate
generate-sources
process-sources
generate-resources
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
: ③如下是site生命周期的阶段
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
-
3.3命令与生命周期的阶段
-
每个maven命令对应生命周期的某个阶段,例如:mvn clean 命令对应clean生命周期的clean阶段, mvn test 命令对应default生命周期的test阶段。
执行命令会将该命令在的在生命周期当中之前的阶段自动执行,比如:执行mvn clean 命令会自动执行pre-clean和clean两个阶段,mvn test命令会自动执行validate、compile、test等阶段。
注意:执行某个生命周期的某个阶段不会影响其它的生命周期!如果要同时执行多个生命周期的阶段可在命令行输入多个命令,中间以空格隔开,例如:
clean package 该命令执行clean生命周期的clean阶段和default生命周期的package阶段
4.Maven常用命令
-
4.1compile
-
compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。
4.2test
-
test是maven工程的测试命令,会执行src/test/java下的单元测试类。
cmd执行mvn test执行src/test/java下单元测试类,下图为测试结果,运行1个测试用例,全部成功
4.3clean
- clean是maven工程的清理命令,执行 clean会删除target目录的内容。 4.4 package
- package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。 4.5install
- install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库
5.Myeclipse(eclipse)插件安装配置
-
5.1maven与myeclipse(eclipse)
- 通过入门程序中命令行的方式使用maven工作效率不高,可以在eclipse开发工具中集成maven软件,eclipse是一个开发工具,maven是一个项目管理工具,maven有一套项目构建的规范,在eclipse集成maven软件,最终通过eclipse创建maven工程 5.2插件安装
-
myeclipse新版本已有了maven插件
5.3指定maven安装目录
-
一些高版本的eclipse已经内置了maven的安装,下图是eclipse mars2版本中已经内置了maven3.3.3版本,项目为了统一maven的版本不会使用eclipse内置的maven版本,这里我们maven3.3.9
5.3user setting配置
-
在eclipse中配置使用的maven的setting.xml文件,使用maven安装目录下的setting.xml文件。
注意:如果修改了 setting.xml文件需要点击上图中的“update settings”按钮对本地仓库重建索引,点击“Reindex”。
5.4 eclipse浏览仓库
-
maven配置完成需要测试在eclipse中是否可以浏览maven的本地仓库,如果可以正常浏览maven本地仓库则说明eclipse集成maven已经完成。
打开eclipse仓库视图,对插件和jar包建立索引
找到Local respository本地仓库项,点击Rebuild index重建索引
重建索引完成点击前边的“+”图标即可查看本地仓库的内容:如下图:
5.Myeclipse(eclipse)新建maven项目
具体可参考博客http://blog.csdn.net/qq_32256235/article/details/77532898