项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程
传统的使用eclipse构建项目的过程如下: 构建过程如下: 1)在eclipse中创建一个java web工程
2)在工程中编写源代码及配置文件等
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段
上图中部分阶段对应命令如下:
清理阶段对应maven的命令是clean,清理输出的class文件
编译阶段对应maven的命令是compile,将java代码编译成class文件。
打包阶段对应maven的命令是package,java工程可以打成jar包,web包可以打成war包
运行一个maven工程(web工程)需要一个命令:tomat:run maven工程构建的优点:
一个命令完成构建、运行,方便快捷。
maven对每个构建阶段进行规范,非常有利于大型团队协作开发。
就是对项目所有依赖的jar包进行规范化管理。一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。
举个例子:一个crm系统,它的架构是SSH框架,该crm项目依赖SSH框架,具体它依赖的Hibernate、Spring、Struts2。
传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将Hibernate、struts2、spring的jar添加到工程中的WEB-INF/lib目录下。
手工拷贝jar包添加到工程中的问题是:
1、没有对jar包的版本统一管理,容易导致版本冲突
2、从网上找jar包非常不方便,有些jar找不到。
3、jar包添加到工程中导致工程过大。
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:
使用maven依赖管理添加jar的好处:
1、通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
2、maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven 工程可以自动从maven仓库下载jar包,非常方便。
通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区域,maven有如下的好处: 1、一步构建 maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。 2、依赖管理 maven 工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。 3、maven的跨平台,可在window、linux上使用。 4、maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构 建项目。
maven的工作需要从仓库下载一些jar包本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
本地仓库: 用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找 默认本地仓库位置在S{user.dir]/.m2/repository,S{user.dir}表示windows用户目录。
远程仓库:
如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。
中央仓库: 在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
链接:https://pan.baidu.com/s/1qsfWF52K-_WhxEiPtVwnXQ 密码:tkn1
在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置:
Maven项目工程目录约定
使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:
src/main/java——存放项目的.java文件
src/main/resources—-存放项目资源文件,如spring,hibernate配置文件
src/test/java——存放所有单元测试,java文件,如JUnit 测试类
src/test/resources——测试资源文件
target——项目输出位置,编译后的class文件会输出到此目录
pom.xml—-maven项目核心配置文件
项目目录约定
compile compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。 cmd进入命令状态,执行mvn compile 查看target目录,class文件已生成,编译完成。
test test是maven工程的测试命令,会执行src/test/java下的单元测试类。 cmd执行mvn test执行src/test/java下单元测试类
clean 是maven工程的清理命令,执行clean会删除target目录的内容。
package package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。
install install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。
maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
Clean Lifecycle在进行真正的构建之前进行一些清理工作。
Default Lifecycle构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle生成项目报告,站点,发布站点。
概念模型图
一个项目生命周期(Project Lifecycle) 使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命周期,如下所示是生命周期的各各阶段:
为了使得Eclipse中安装的Maven插件(现在下载的Eclipse办版本较高自带的Maven),同windows中安装的那个相同,需要让eclipse中的maven重新定位一下,点击Window->Preference->Maven->Installation->Add进行设置。如图:
配置Maven本地仓库,首先我们来看一个文件,文件放在maven的安装目录下面的conf子目录下面,大家打开这个文件夹可以看到有个叫settings.xml的文件夹,这个里面包含仓库地址、镜像、插件、代理等配置,也是maven中一个核心配置文件,在后面我们会经常跟她打交道。下面我来看看这个文件以及如何配置本地仓库。
在eclipse中,点击Window->Preference->Maven->User Settings进行设置。如图:
在eclipse中用maven创建项目,右键new>>Maven Project
输入Maven配置信息
刚创建完的新Maven项目会报错误(原因是缺少web.xml文件)
方式一:
手动添加WEB-INF文件和web.xml文件
方式二:(推荐)
右击该maven 项目,找到ProjectFacets取消选中Dynamic Web Module选项,点击应用,再选中Dyanmic Web Module,就会出现一个选项卡
在Content directory填写src/main/webapp 之后就会在生成两个文件夹
处理编辑版本,把更改 jre的版本,更改为javaSE-1.8(自己的版本对应)
方法一:右键项目->build path->configure build path;然后点击Libraries,双击JRE选择javaSE-1.8(根据自己版本选择)
项目开发时候遇到点击maven update project,项目引入的jdk或者jre会变回1.5版本
解决办法: 第一步: 在pom.xml里添加下面代码修改成jdk1.8的,这里由于本人用的是jdk1.8的,所以这里填了1.8,如果用jdk1.7的就填1.7,自己对应去填
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>第二步
右键点击项目,到properties里设置一下,这里选择1.8跟上面对应的
从网上搜索:百度maven仓库http://mvnrepository.com/tags/maven 这网上收索的要自己加跟元素;依赖jar包需要加<dependencies> 插件需要<build>元素和<plugins>元素
利用本地仓库,在eclipse建立索引,方便收索jar包 打开Maven视图(window-show View-other)
在本地仓库重建索引(可以很方便的对pom.xml文件进行配置)
添加的方法:
点击pom.xml
A填写需要的jar包名,C是选择版本,B是作用范围:
compile 在编译时,测试时,运行时(即打包的时候也要)需要这个jar包【举例:struts2-core】;
provided 编译时,测试时需要这个 jar包,运行时(打包)不需要【举例:jsp-api.jar;servlet-api.jar】;
runtime测试时,运行(打包)时需要这个jar包,编译时不需要【举例:数据库驱动包】;
Test 测试需要这个jar包,编译时,运行时(打包)不需要
需要手动更新下项目,jar包才对加进去在项目上右键鼠标-》Maven-》update project
用maven运行项目
A是用来输入maven命令的,B是以前输入的maven命令 tomcat:run默认是6;tomcat7:run是运行7;这里运行的tomcat都不是自己下载的,都是maven的tomcat插件<build> <plugins> <!-- 配置了很多插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>9090</port> <!--项目名称--> <path>/mgr</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> </plugins> </build>Maven的debug 点击需要debug需要的项目