Maven
一、maven简介
Maven是基于POM(工程对象模型),通过一小段描述来对项目的代码、报告、文件进管理的工具。
Maven是一个跨平台的项目管理工具,它是使用java开发的,它要依赖于jdk1.6及以上。
maven主要有两大功能:
1)依赖管理
其中“依赖”就是指依赖的jar包(当然可以是下载的也可以是我们自己写的),主要是通过pom.xml文件来管理。
2,项目构建
Maven这个工具可以根据模板创建项目,也可以从已有的项目生成模板,这里的模板,Maven术语叫archetype;
二、maven安装
1,从官方网站:http://maven.apache.org下载;
2,将下载的压缩包解压;
bin里是maven命令;boot里有类加载器;conf里有配置文件;lib里是maven的jar包。
3,配置环境变量
4,验证,命令mvn -v
5,配置maven
在maven安装目录的conf里面有一个settings.xml文件(全局配置文件),这个文件就是maven的全局配置文件,该文件中配置了maven本地仓库的地址
默认配置的本地仓库地址是~/.m2/repository,(在Windows和linux下 ~ 这个符号就是“用户”目录)。
我们如果想把本地仓库配置到其他地方,如下配置一下就行,就是把本地仓库指定为D:\workspaces-itcast\repository。
三、创建maven工程
1,命令行创建maven工程:
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.fxust -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn.everlook.myweb -DartifactId=myweb -DarchetypeArtifactId=maven-archetype-webapp
说明:
1)坐标
GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的GroupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,ArtifactId是tomcat。
ArtifactId设置为testProj,表示你这个项目的名称是testProj,依照这个设置,在你创建Maven工程后,新建包的时候,包结构最好是cn.zr.testProj打头的,如果有个StudentDao[Dao层的],它的全路径就是cn.zr.testProj.dao.StudentDao。
2)archetypeArtifactId(项目骨架的类型)
* maven-archetype-archetype
* maven-archetype-j2ee-simple
* maven-archetype-mojo
* maven-archetype-portlet
* maven-archetype-profiles (currently under development)
* maven-archetype-quickstart
* maven-archetype-simple (currently under development)
* maven-archetype-site
* maven-archetype-site-simple
* maven-archetype-webapp
2,在eclipse中创建maven工程
先配置一下eclipse中的maven,可以使用eclipse中集成的maven(默认),也可以点击右侧add添加自己安装的maven。
然后再指定一下maven的配置文件就可以了。
这里我把全局配置和用户配置文件都设为一个了,因为暂时觉得没有必要设两个文件。
到这里就可以在eclipse中创建maven工程了
方式一:使用骨架模版
我们常用的骨架模版就上面这两种,quickstart1.1用于普通java项目,webapp1.0用于创建web项目。
这里设置G A V(即坐标)。
如果上面选骨架模版时选为webapp1.0那个,则创建的项目目录结构为:
方式二:不使用骨架模版
这里可以选择工程的3种打包方式:
1,pom包,一般就是一个只包含pom.xml的空工程(作为父工程)用于jar的版本控制,即用来约束整个工程所使用的工具。
2,jar包,我们用的各种工具类就是jar包,当然我们自己写的实现某些功能的模块(例如dao层用于操作数据库的模块)就打为jar包。
3,war包,例如我们的web工程中的网页资源等就不能打为jar包(因为这些资源是用户需要访问的,不能压缩为jar包)
例如下面网上的淘淘商城的项目结构
四、maven命令
Maven的命令要在pom.xml所在目录(即工程目录)中去执行。
4.1 Mvn compile
编译的命令
编译的时候需要依赖(包括jar包和maven相关东西),会先去我们指定的本地仓库找,找不到就去网上下并存到本地仓库。
编译会产生target文件夹(在编译的工程目录下),里面就是编译后的源码.class文件。
4.4 Mvn clean
清除命令,清除已经编译好的class文件,具体说清除的是target目录中的文件。
4.3 Mvn test
测试命令,该命令会将test目录中的源码进行编译
在target目录下的surefire-reports文件夹生成测试报告
4.4 Mvn package
打包命令(默认打成jar包)。
4.5 Mvn install
安装命令,会将打好的包,安装到本地仓库。
当然可以把这些命令进行组合
1) mvn clean compile 先清空再编译
2)mvn clean test 先执行clean,再执行test,通常应用于测试环节
3)mvn clean package 先执行clean,再执行package,将项目打包,通常应用于发布前
执行过程:
- 清理————清空环境
- 编译————编译源码
- 测试————测试源码
- 打包————将编译的非测试类打包
4)mvn clean install 先执行clean,再执行install,将项目打包,通常应用于发布前
执行过程:
- 清理————清空环境
- 编译————编译源码
- 测试————测试源码
- 打包————将编译的非测试类打包
- 部署————将打好的包发布到资源仓库中
在eclipse中运行,在项目上有右键run as -> maven build,然后再下面goals中写命令即可(不用写mvn)