Maven

Posted xdyixia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于Maven的主要内容,如果未能解决你的问题,请参考以下文章

Mavenmaven简介

mavenmaven jar 包 冲突 的解决方式

Maven实战之初识MavenMaven的简单介绍

MavenMaven四大特性

mavenmaven pom文件详解

mavenmaven各种奇葩问题