文章目录
第一天
开发项目时要找某个jar包,实际上就是要确定jar包的坐标
1.maven坐标及仓库的概述
2.项目的运行
1.打开cmd,在编程后的项目所在路径下,使用命令mvn tomcat:run将项目部署到tomcat上,然后打开浏览器运行项目。如图:
2.将项目打成war包,如果是web工程是打包成war,是java工程打包成jar,父工程打包成pom,使用命令mvn package如图:
打包后的war再target目录下,如图:
3.相关概念
构建
maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段:
上图中部分阶段对应命令如下:
-
清理阶段对应maven的命令是clean,清理输出的class文件
-
编译阶段对应maven的命令是compile,将java代码编译成class文件。
-
打包阶段对应maven的命令是package,java工程可以打成jar包,web工程可以打成war包
-
运行一个maven工程(web工程)需要一个命令:tomat:run
maven工程构建的优点:
1、一个命令完成构建、运行,方便快捷。
2、maven对每个构建阶段进行规范,非常有利于大型团队协作开发。
依赖管理
1.传统项目的依赖管理
传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将Hibernate、struts2、spring的jar添加到工程中的WEB-INF/lib目录下:
手工拷贝jar包添加到工程中的问题是:
1、没有对jar包的版本统一管理,容易导致版本冲突。
2、从网上找jar包非常不方便,有些jar找不到。
3、jar包添加到工程中导致工程过大。
2.maven项目的依赖管理
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:
使用maven依赖管理添加jar的好处:
1、通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
2、maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便。
maven的优势
-
一步构建 maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。 依赖管理
-
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。
-
maven的跨平台,可在window、linux上使用。
-
maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。
生命周期
maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
生命周期阶段
-
如下是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 将生成的站点文档部署到特定的服务器上
每个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的安装和目录结构
下载
从该网站 http://maven.apache.org/download.cgi 下载maven3.3.9 版本
解压
将maven解压到一个不含有中文和空格的目录中。
bin目录 mvn.bat (以run方式运行项目)、 mvnDebug.bat(以debug方式运行项目 )
boot目录 maven运行需要类加载器
conf目录 settings.xml 整个maven工具核心配置文件
lib目录 maven运行依赖jar包
环境变量的配置
电脑上需安装java环境,安装JDK1.7 + 版本 (将JAVA_HOME/bin 配置环境变量path )
配置 MAVEN_HOME
将 %MAVEN_HOME%/bin 加入环境变量 path
通过 mvn -v命令检查 maven是否安装成功,看到maven的版本为3.3.9及java版本为1.7即为安装成功。
目录结构
Maven目录结构的规范
5.仓库的配置
仓库的分类
maven的工作需要从仓库下载一些jar包,如下图所示
本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,
本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,
因为本地仓库已经存在了,可以将本地仓库理解为缓存
本地仓库的配置
- 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
- 默认本地仓库位置在 u s e r . d i r / . m 2 / r e p o s i t o r y , {user.dir}/.m2/repository, user.dir/.m2/repository,{user.dir}表示windows用户目录。
- 远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。
- 中央仓库 :在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
配置
将 “repository.rar”解压至自己的电脑上
配置文件:在maven安装路径下\conf\settings.xml文件中配置本地仓库位置:
6.maven的命令
1.compile
compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。
cmd进入命令状态,执行mvn compile,如下图提示成功:
查看 target目录,class文件已生成,编译完成。
2.test
test是maven工程的测试命令,会执行src/test/java下的单元测试类。
cmd执行mvn test执行src/test/java下单元测试类,下图为测试结果,运行1个测试用例,全部成功。
3.clean
clean是maven工程的清理命令,执行 clean会删除target目录的内容。
4.package
package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。
5.install
install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。
从运行结果中,可以看出:当后面的命令执行时,前面的操作过程也都会自动执行
7.maven工程创建及坐标的添加
m2e插件安装配置
通过入门程序中命令行的方式使用maven工作效率不高,可以在eclipse开发工具中集成maven软件
eclipse是一个开发工具,maven是一个项目管理工具,maven有一套项目构建的规范
在eclipse集成maven软件,最终通过eclipse创建maven工程。
插件安装
在eclipse中配置仓库的位置
构建索引
Window—show view ------other----------maven Repositories
重构索引
在eclipse中创建一个maven工程
选择maven project
点next进入下面的界面
8. 可以看到一个helloworld工程,但报错(添加下面的内容就OK了)
9. src/java/main创建了一个Servlet,但报错
10. 要解决问题,就是要将servlet-api-xxx.jar包放进来,作为maven工程应当添加servlet的坐标,从而导入它的jar
直接打开helloworld工程的pom.xml文件,再添加坐标
添加后自动生成的结果如下:
添加
添加jar包的坐标时,还可以指定这个jar包将来的作用范围