Maven入门教程

1.1.介绍、环境配置
1.1.1.Maven介绍
Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。Maven正是为了将开发人员从这些任务中解脱出来而诞生的
1.1.2.Maven能够做什么
Jar的声明式依赖性管理
项目自动构建
1.1.3.环境配置
http://maven.apache.org/download.html 下载最新版本Maven 3.0.2 (Binary zip)

Maven入门教程
解压到 D(本身就是绿色版不需要安装):
Maven入门教程
配置环境变量(配置之前,必须确定配置了JDK环境变量)
MAVEN_HOME : D:\apache-maven-3.0.2
把此命令添加到Path中: %MAVEN_HOME%\bin
MAVEN_OPTS : -Xms256m -Xmx512m
配置用户范围的settings.xml
MAVEN_HOME/conf/settings.xml 全局的
~/.m2/settings.xml 单个用户的
Maven入门教程
验证安装是否成功:
在命令行上输入: mvn -version;回车, 如看到下面信息表示安装成功
Maven入门教程

1.1.4.Maven目录分析
bin:含有mvn运行的脚本
boot:含有plexus-classworlds类加载器框架
conf:含有settings.xml配置文件
lib:含有Maven运行时所需要的java类库
Settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到指定的个人仓库中]
Maven默认仓库下载地址在: maven的lib目录下maven-model-builder-3.0.4.jar的pom.xml中
1.2.第一个Maven演示
1.2.1.创建目录结构
Convention Over Configuration (约定优于配置)。在现实生活中,有很多常识性的东西,地球人都知道。比如说:如何过马路(红灯停绿灯行),如何开门,关门等。对于这些事情,人们已经有了默认的约定, 在软件开发过程中,道理也是类似的,如果我们事先约定好所有项目的目录结构,标准开发过程(编译,测试) , 所有人都遵循这个约定。软件项目的管理就会变得简单很多。在现在流行的很多框架中,都使用了这个概念

Hello
–src
-----main
----------java --用来存放Java文件
----------resources --用来存放资源文件
-----test
---------java --用来存放测试的Java文件
---------resources
–target --项目输出位置,编译完毕后自动生成
–pom.xml – 项目对象模型的描述 ,它是maven配置的核心

建立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">
  <!-- 当前pom的版本号 -->
  <modelVersion>4.0.0</modelVersion>
  <!-- groupId: 当前jar所属的命名空间 -->
  <groupId>cn.it.maven</groupId>
  <!-- 当前项目模块名称 -->
  <artifactId>Hello</artifactId>
  <!-- 当前项目的版本, SNAPSHOT镜像版 -->
  <version>0.0.1-SNAPSHOT</version>
	<!-- 当前模块需要依赖的相关jar包,也称为依赖管理, 所有被依赖的包都是通过"坐标"定位的 -->
	<dependencies>
	    <!-- 需要依赖junit 通过 groupId+artifactId+version来查找,如果本地没有则到*仓库下载 -->
		<dependency>
			<!-- 当前jar所属的命名空间 -->
			<groupId>junit</groupId>
			<!-- 依赖的项目模块的名称 -->
			<artifactId>junit</artifactId>
			<!-- 依赖的版本号 -->
			<version>4.9</version>
			<!-- 依赖的范围, 有 test compile privlege -->
			<scope>test</scope>
		</dependency>		
	</dependencies>
</project>

pom.xml 文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息。POM大而复杂,但你不用全部去了解,只要使用一些常用的配置就可以了
创建Java类与测试类
在src/main/java/com/zking/maven目录下新建文件Hello.java

package com.zking.maven;
public class Hello {
	public String sayHello(String name){
		return "Hello "+name+"!";
	}
}

在/src/test/java/com/zking/maven目录下新建测试文件HelloTest.java

package com.zking.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("litingwei");
		assertEquals("Hello litingwei!",results);		
	}
}

命令测试

打开cmd命令行, 进入Hello项目根目录执行mvn compile命令, 查看根目录变化
cmd 中继续录入mvn clean命令,然后再次查看根目录变化
cmd 中录入 mvn clean compile命令, 查看根目录变化
cmd 中录入 mvn clean test命令,查看根目录变化
cmd 中录入 mvn clean package命令,查看根目录变化

Maven核心概念
1.3.1.Maven插件
Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的每个插件都能实现多个功能,每个功能就是一个插件目标
Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务, Maven的插件在: .m2\repository\org\apache\maven\plugins
Maven坐标
类似在平面几何中坐标(x,y)可以标识平面中唯一的一点, Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范
拥有了统一规范,就可以把查找工作交给机器
groupId:定义当前Maven项目组 (实际对应JAVA的包的结构,有些跟公司名称相关的项目)
artifactId:定义实际项目中的一个模块(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称)
version:定义当前项目的当前版本

Maven仓库
何为Maven仓库:用来统一存储所有Maven共享构建的位置就是仓库
Maven配置jar包的路径为:groupId/artifactId/version
本地仓库(~/.m2/repository/):每个用户只有一个本地仓库
*仓库(Maven默认的远程仓库):Maven默认的远程仓库下载地址为:http://repo1.maven.org/maven2
私服:是一种特殊的远程仓库, 它是架设在局域网内的仓库, 主要是为了团队协作开发

Maven与Eclipse整合
配置maven插件
Maven入门教程
Maven入门教程