Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理。html
如图为项目构建的过程。java
解决的项目的问题:web
一、 若是有好几个项目,这好几个项目中,须要用到不少相同的jar包,spring
能不能只创建一个仓库来解决这个问题?apache
2、测试方法能不能所有运行呢?eclipse
3、怎么样把一个模块的功能放入到仓库中maven
2 Maven 的安装与配置2.1 Maven的安装
2.1.1 Jdk的状况
Jdk必须1.6以上的版本ide
2.1.2 从官网下载maven
从http://maven.apache.org/官网上下载最新版本的maven工具
2.1.3 设定path路径
把下载下来的maven解压缩,而后有一个bin文件夹,这是一个bin的文件夹的目录post
F:\work\course\maven\maven\bin
把该目录追加到环境变量的path中。
2.1.4 利用命令行检查是否成功
有这个图,说明maven安装成功了。
2.2 建库
2.2.1 先打开路径
C:\Users\Think\.m2
2.2.2 把settings.xml文件复制到上述的路径中
F:\work\course\maven\apache-maven-3.0.5-bin\apache-maven-3.0.5\conf
有一个settings.xml文件,复制到C:\Users\Think\.m2
2.2.3 修改settings.xml文件
<localRepository>F:/work/course/maven/mavenRepository/</localRepository>
指定仓库的路径
在这里mavenRepository就是仓库的路径
2.3 Maven的配置
说明:
bin中存放可执行的二进制文件
conf存放settings.xml文件
lib 运行maven所依赖的jar包
2.4 maven的约定
src/main/java 存放项目的java文件
src/main/resources 存放项目的资源文件,如spring,hibernate的配置文件
src/test/java 存放全部的测试的java文件
src/test/resources 存放测试用的资源文件
target 项目输出位置
pom.xml 文件
3 maven 项目
3.1 hello项目
3.1.1 在myeclipse创建一个项目Hello
3.1.2 建立一个包cn.itcast.maven,并在该包下建立一个类
3.1.3 编写Hello类
3.1.4 在src/test/java中建立一个包cn.itcast.maven,建立一个测试类HelloTest
3.1.5 编写测试类
3.1.6 编辑pom.xml文件
说明:
project:表示一个工程
modelVersion:为版本号
3.1.7 用maven命令编译项目(mvn compile)
在命令行出现这样的形式,说明编译OK了。
3.1.8 target文件夹的变化
能够看到编译后的文件所有放入到了target里。
3.1.9 clean
执行命令mvn clean
说明执行成功了。
能够看到target的目录没有了。
3.1.10 test
执行mvn test命令
说明执行成功了,而且运行了一个类,再次看target的结构
说明:
target/classes
存放编译后的类
target/test-classes
存放编译后的测试类
target/surefire-reports
存放测试报告
能够看出,只要进行测试,清理和编译能够自动执行了。
3.1.11 package
执行mvn package
这个界面说明打包成功了。
说明:
target/classes
编译后的类的路径
target/test-classes
编译后的测试类的路径
target/surefire-reports
测试报告
target/maven-archiver
执行package的归档
Hello-0.0.1-SNAPSHOT.jar
执行完package命令后打成的jar包
3.2 Hellofriend项目
3.2.1 创建HelloFriend项目工程
3.2.2 编写pom.xml文件
3.2.3 执行mvn compile命令
执行这个命令的时候会出错,由于HelloFriend项目是创建在Hello项目基础之上的,可是如今工程中没有引入Hello.java这个类。因此会出错。
3.2.4 执行mvn clean install命令
一、 打开命令行
二、 把当前路径调节到Hello工程的根目录
三、 执行mvn clean install命令,把Hello整个工程放入到仓库中
若是执行成功,则会在仓库中看到。
在仓库中的位置。
3.2.5 执行mvn package命令打包HelloFriend工程
说明成功了。
能够看到成功之后,在target目录下多了一个jar包
该jar包为当前工程的jar包。
3.2.6 创建cn.itcast.maven包及HelloFriend类
3.2.7 编辑HelloFriend类
3.2.8 创建cn.itcast.maven包和测试类HelloFriendTest类
3.2.9 编辑HelloFriendTest类
3.2.10 执行mvn package命令
上图中的”say hello”就是输出的结果。
4 maven 的核心概念4.1 项目对象模型
说明:
maven根据pom.xml文件,把它转化成项目对象模型(POM),这个时候要解析依赖关系,而后去相对应的maven库中查找到依赖的jar包。
在clean,compile,test,package等阶段都有相应的Plug-in来作这些事情。
而这些plug-in会产生一些中间产物。
4.2 插件的位置
在maven解压后的位置F:\work\course\maven\maven有一个bin文件夹,里面有
一个文件m2.config文件
set maven.home default ${user.home}/m2,其中该路径指明了仓库的存储位置。
其中settings.xml文件中
这个说明了仓库中的位置。
这里的插件就是执行maven的各类命令所须要的插件。
4.3 maven坐标
4.3.1 maven坐标的主要组成
groupId:定义当前maven项目属于哪一个项目
artifactId:定义实际项目中的某一个模块
version:定义当前项目的当前版本
packaging:定义当前项目的打包方式
根据这些坐标,在maven库中能够找到惟一的jar包
4.4 依赖管理
4.5 继承管理
建立一个项目ParentJunit
新建一个项目:
编辑pom.xml文件
说明:只须要继承ParentJunit,因此junit就被引入到HelloJunit中了
4.6 仓库管理
能够根据maven坐标定义每个jar包在仓库中的存储位置。
大体为:groupId/artifactId/version/artifactId-version.packaging
4.6.1 仓库的分类
本地仓库
~/.m2/repository/
每个用户也能够拥有一个本地仓库
远程仓库
中央仓库:Maven默认的远程仓库
http://repo1.maven.org/maven2
私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
镜像:用来替代中央仓库,速度通常比中央仓库快
5 maven 在 myeclipse 中的应用
5.1 环境配置
若是所示,myeclipse自带maven,从上图看以看到Maven JDK是能够配置的,这里用了jdk1.6
从上图能够看出,咱们能够利用myeclipse自带的maven,也可使用本身的maven。
上图应用的就是本身的maven。
从最下面能够看出,这是settings.xml文件的路径。
这幅图说明了用户的settings.xml文件的位置和用户的仓库的位置。
这是最基本的环境的配置。
5.2 settings.xml文件
5.2.1 仓库的路径
经过配置localRepository的值能够改变仓库的路径。
5.2.2 配置私服的路径
5.2.3 直接链接互联网
若是不想链接私服,能够直接链接互联网。只须要把链接私服的全部的路径去掉便可。
5.3 建立maven工程
5.3.1 建立java project
选择Maven Project
选择快速建立maven-archetype-quickstart
填写group ID,Artiface Id,Version,Package属性
而后点击finish就能够了。
5.3.2 建立web project
新建立一个web project
添加maven support便可。