1.Maven简介
2.Maven入门
3.Maven配置
4.Maven整合Eclipse
5.Maven管理依赖和插件
一、Maven简介
1.项目开发遇到的问题
项目构建:包括编译,运行测试,打包,部署,运行服务器等一系列操作,每个过程都相当繁琐.
项目依赖:项目越来越大,需要的第三方工具包越来越多,第三方工具包又需要依赖其他jar包,维护项目的依赖以及管理依赖之间的关系需要耗费较大的精力.
2.Maven简介
Maven属于Apache基金会的子项目,百度百科中的解释为:
Maven是一个跨平台的项目管理工具.可以管理项目生命周期中的构建(编译,运行测试,打包,部署等)和项目的依赖(jar包),以及管理项目各个模块之间的依赖关系.
使用Maven的好处:
1、Maven能提供一种项目的配置,配置好的项目,只需要运行一条简单的命令,就能完成重复的,繁琐的构建动作
2、Maven能提供一种项目的依赖配置,可以自动的导入项目依赖的jar,并且自动导入这些jar包依赖的第三方jar包
3、Maven提供了一种标准的项目结构,测试命名规则等项目的最佳实践方案,统 一了不同项目的学习成本.
二、Maven入门
1.Maven的安装
(1)Maven的下载
http://maven.apache.org/download.cgi
链接:https://pan.baidu.com/s/19zfGCPIhmwf2GH0HSbZqNQ
提取码:js3e
(2) 检查JDK安装的情况(需要1.6以上的版本):
添加JAVA_HOME,需要指向JDK安装目录;
添加PATH,添加%JAVA_HOME%\bin;
(3)apache-maven-3.2.5-bin.zip解压到目录中(目录路径最好不要有空格和中文)
目录介绍:
bin:存放执行脚本文件的地方
boot:存放一些扩展的地方,类加载的文件
conf:maven的核心配置文件存放的路径
lib:maven的依赖包
(4)设置系统环境变量,MAVEN_HOME,指向maven的根目录
设置环境变量Path,将%MAVEN_HOME%\bin加入Path中;
(5)验证Maven安装
打开cmd,输入mvn -version
2.Maven的目录结构
Maven规定了一套标准的目录结构:
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring、struts2配置文件,db.properties
src/main/webapp —— 存放jsp,css,image等文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
pom.xml——主要要写的maven配置文件
target —— 项目由maven自动输出位置
3.Maven入门案例
(1)按照下面的结构创建一个目录结构
--src
------main
-----------java
------test
-----------java
--pom.xml
(2)在src/main/java下添加类:(记得建包再建类)
package com.xj.maven;
public class Hello {
public String sayHello(String name){
return "Hello Maven World!";
}
}
(3)在src/test/java下添加类: (记得建包再建类)
package com.xj.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
@Test
public void testHello(){
Hello hello = new Hello();
String results = hello.sayHello("World");
System.out.println(results);
}
}
(4)编辑pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xj.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
(5)切换到项目根目录下,运行命令窗口,分别执行下列命令并观察:(项目根目录-->Shift+右键-->在此处打开命令窗口)
执行 mvn compile命令:编译项目
执行mvn clean命令:清除字节码
执行mvn clean compile命令:先清除字节码,在编译项目
执行mvn test命令:执行测试
执行mvn package命令:项目的打包:java项目-jar Web项目-war
执行mvn clean site命令:生成项目相关的网页
执行mvn install命令:将项目打成的包安装到maven本地仓库中
三、Maven配置
1.Maven的仓库 repository
仓库类型 | 仓库名称 | 作用 |
本地仓库 | 本地仓库 | 相当于缓存,在电脑中为一个文件夹.工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。 第二次不需要从远程仓库去下载。先从本地库找,如果找不到才会去远程仓库找。 |
远程仓库 | 中央仓库 | 仓库中的jar包由专业团队(maven团队)统一维护。里面存放了全世界大多数流行开源软件jar包.为Maven默认的远程仓库. |
| 私服 | 在公司内部架设一台服务器,存放所有需要的jar包,对外公开,供终端进行下载. |
2.Maven配置本地仓库
在Maven安装路径下,config文件夹中,修改settings.xml配置文件.
配置localRepository标签的值.
再执行命令,生成的就放在自定义的位置下面
3.Maven配置远程仓库镜像
Maven默认的远程仓库,受网络的影响,不够便捷.于是可以使用国内的阿里云的Maven仓库作为中央仓库的镜像.
配置方式可以在settings.xml的配置文件中配置mirrors标签.
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
其中各个标签的含义:
id:当前镜像的唯一的标识
name:当前镜像的名字,主要方便于开发者阅读.
mirrorOf:为哪个远程仓库做的镜像.因为中央仓库的id为central,所以为中央仓库做镜像时,其值必须为”central”.
url:阿里云Maven仓库的地址.
四、Maven整合Eclipse
1.Eclipse中配置Maven
选择Window--->Preference--->Maven--->Add,添加本地安装的Maven
勾选新添加的Maven
选择User Settings,配置读取Maven配置文件的地址以及本仓库的地址.
2.JDK和JRE的更改
选择Window--->Preference
项目右键-->Build Path-->configure Build Path
3.创建java项目
选择File--->New--->Project--->Maven Project,选择,Next,选中maven-archetype-quickstart,点击Next;
录入groupId,artifactId和version,点击Finish.
groupId,artifactId,version的录入原则:
groupId翻译为组Id,通常的写法为公司域名的倒写,表示本项目属于哪个公司.
artifactId翻译为手工艺品,表示项目的的名字或者模块的名字.
Version通常为X.X.X格式,表示项目的版本号.
注:版本不用改动。坐标:用于唯一的约束当前项目在本地仓库的位置。创建好之后,不要改动
4.Maven导包
添加到pom.xml文件中之后,测试类不会报错
5.运行Maven命令
右击项目,选择Run As 或者 Debug As,选择Maven build...,在Goals文本框中可以直接输入Maven的命令,但是不需要添加”mvn”的前缀,
6.创建web项目
选择File--->New--->Project--->Maven Project,选择,Next,选中maven-archetype-webapp,点击Next;(使用骨架)
以相同的原则录入groupId,artifactId,version,点击Finish
注意:使用骨架床架出的项目结构,都是不是标准的Maven目录结构,需要添加缺失的文件
还可以跳过骨架的选择创建,项目需要在点击Maven Project之后的对话框中勾选Create a simple project.(跳过骨架)
然后出了需要录入groupId,artifactId和version外,还需要选择packaing打包方式.如果是java项目则选择jar,如果创建的是web项目则选择war.
五、Maven管理依赖和插件
1.管理项目的依赖
(1)添加Maven依赖
在项目的pom.xml文件中,添加<dependencies>标签,在标签中的每个依赖需要对应<dependency>标签.<dependency>标签中需要填写jar包坐标.(上面Junit导包就是远程仓库中下载jar包到本地,下面这个是导入别的项目的jar包,也就是本地仓库的jar包)
(2)Maven的依赖范围
依赖:项目需要依靠一个jar
依赖范围:依赖一个jar,并不一定是在项目整个生命周期都需要它,可能只是在某一个阶段需要,那么依赖范围就是在定义在哪些阶段依赖这个jar
A依赖B,需要在A的pom.xml文件中添加B的坐标,坐标除了上面写的,还有一个scope ,这是依赖的范围。
scope有几个可选值, 如:
1、compile: 默认值,表示编译依赖范围。即编译、测试、运行时都需要,会被打包。(默认值compile表明该jar一直全程存在/需要)
2、test:表示测试依赖范围。即测试时需要,编译和运行时不需要,不会被打包。比如:junit。
3、provided:表示已提供依赖范围。即编译、测试时需要,运行时不需要,不会被打包。比如:servlet-api和jsp-api被tomcat容器提供。
服务器本身会提供这些jar,避免和服务器上的这些包冲突
4、runtime:表示运行时提供依赖范围。即编译时不需要,运行和测试时需要,会被打包。比如:jstl、jdbc驱动。
5、system:system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。
2.管理项目的插件
Maven创建的项目默认的JDK版本是1.5,可以使用Maven的编译插件改变项目的JDK版本.
可以使用Maven的tomcat7插件作为项目的服务器,启动服务器之后,运行tomcat7:run即可.
注:放到<build><plugins></plugins></build>标签里