Maven入门
1.1 介绍
Maven是一个采用纯Java编写的开源项目管理工具,Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件Maven可以管理项目的整个生命周期,包括清除、编译、测试,报告、打包,部署等好处:
节省程序员的时间与精力,开发人员主要任务是关注商业逻辑并实现它,而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。1.2
Maven能够做什么
1 Jar的声明式依赖性管理
2 项目自动构建1.3 Maven 目录分析
bin: 含有mvn运行的脚本
boot: 含有plexus-classworlds类加载器框架
conf: 含有settings.xml配置文件
lib: 含有Maven运行时所需要的java类库
Settings.xml中默认的用户库: ${user.home}/.m2/repository
Maven默认仓库下载地址: maven 的lib目录下 maven-model-builder-3.0.4.jar的pom.xml中1.4 第一个Maven演示
项目目录结构:
Hello
–src
—–main
———-java –用来存放Java文件
———-resources –用来存放资源文件
—–test
———java –用来存放测试的Java文件
———resources
–target –项目输出位置,编译完毕后自动生成
–pom.xml – 项目对象模型的描述 ,它是maven配置的核心- 4.1 建立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>
<!—grounpId, artifactId, version用来定义打包文件坐标-->
<!-- 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>
1.4.2 创建Java类与测试类
- 在src/main/java/cn/it/maven目录下新建文件Hello.java
package cn.it.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
- 在/src/test/java/cn/it/maven目录下新建测试文件HelloTest.java
package cn.it.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);
}
}
1.5. 命令测试
打开cmd命令行, 进入Hello项目根目录执行mvn compile命令, 查看根目录变化
cmd 中继续录入mvn clean命令,然后再次查看根目录变化
cmd 中录入 mvn clean compile命令, 查看根目录变化
cmd 中录入 mvn clean test命令,查看根目录变化
cmd 中录入 mvn clean package命令,查看根目录变化 打包放在 项目下边
cmd 中录入 mvn install : 安装,把项目的jar包安装到 本地仓库 扔到仓库1.6Maven核心概念
1.6.1 Maven插件
Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的每个插件都能实现多个功能,每个功能就是一个插件目标
Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务, Maven的插件在: .m2\repository\org\apache\maven\plugins (也可以更改目录)1.6.2 Maven坐标
- groupId:定义当前Maven项目组 (实际对应JAVA的包的结构,有些跟公司名称相关的项目)
- artifactId:定义实际项目中的一个模块(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称)
- version:定义当前项目的当前版本1.6.3 Maven仓库 - 何为Maven仓库: 用来统一存储所有Maven共享构建的位置是仓库 - Maven配置jar或其它包的路径为 : groupId/artifactId/version - 本地仓库(~/.m2/repository/):每个用户只有一个本地仓库 - 中央仓库(Maven默认的远程仓库):Maven默认的远程仓库下载地址为:http://repo1.maven.org/maven2 - 私服:是一种特殊的远程仓库, 它是架设在局域网内的仓库, 主要是为了团队协作开发