一:什么是mavent?
1.1: maven 英文翻译过来叫做“专家”,“内行”,Maven是跨平台的项目管理工具(相当于把我们知道的东西都放在一块。跨平台的项目管理工具 ) 。作为Apache组织中的一个最为成功的开源项目 ,主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。
1.2:什么是项目构建?
项目构建过程:清理->编译->测试->报告->打包->部署 --> 理想的项目构建(高度自动化,跨平台,可重用的组件,标准化的 )
1.3:什么是依赖管理?
依赖:可以理解为jar包之间的互相依赖,自动下载,统一依赖管理
1.4:什么是项目信息?
项目名称描述等,开发人员信息,开发者信息等
二:为什么要用maven?
2.1:手工操作较多,编译、测试、部署等工作都是独立的,很难一步完成:
2.2:每个人的IDE配置都不同,很容易出现本地代码换个地方编译就出错
-
Ant?
-
没有一个约定的目录结构
-
必须明确让ant做什么,什么时候做,然后编译,打包
-
没有生命周期,必须定义目标及其实现的任务序列
-
没有集成依赖管理
-
Maven?
-
拥有约定,知道你的代码在哪里,放到哪里去
-
拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
-
只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
-
拥有依赖管理,仓库管理
三:怎么用mavent?
3.1:安装maven
-
确认jdk是否已安装?
-
下载Maven
-
版本:Maven3.0
3.2 : Maven安装过程
[1]验证JDK是否正确安装,JAVA_HOME是否正确配置,这都是Maven正常工作所必需的。
echo %JAVA_HOME%
java -version
[2]将安装包解压至非中文无空格目录
[3]配置MAVEN_HOME=解压目录 MAVEN_HOME=D:\DevInstall\apache-maven-3.0.4
[4]配置path=%MAVEN_HOME%\bin
[5]验证安装是否成功:在命令行输入mvn -v
3.2:Maven初始配置
[1]Maven配置文件
{1}全局范围:位于解压目录\apache-maven-3.0.4\conf
{2}当前用户范围:将全局范围的settings.xml文件复制到~/.m2目录下。其中~代表当前用户所在目录。
{3}当“当前用户范围”和全局范围的settings.xml文件同时存在时,“当前用户范围”的settings.xml文件有效
[2]配置Maven仓库
{0}为什么要指定另外一个仓库?
Maven执行任何功能都需要使用Maven的插件;而Maven插件并不在Maven的核心程序中。当需要用到某插件时,Maven会自动联网下载,下载到当前的仓库中。如果不能上网,则只能事先将有可能用到的插件下载好,将当前仓库指定为已下载Maven插件的那个目录,作为当前的Maven仓库。
{1}Maven本地仓库的默认位置:~/.m2/repository。
{2}修改本地仓库位置:在settings.xml中修改
<localRepository>D:\DevRepository\mavenRepository03</localRepository>
3.3 : Maven约定
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml相当于web.xml
02_Maven项目举例
3.4 : 第一个Maven项目(没有使用eclipse)
①首先建立Hello项目同时建立Maven约定的目录结构
Hello
--src
-----main
---------java
---------resources
-----test
---------java
---------resources
--pom.xml
②在项目Hello根目录建立pom.xml
<?xml version="1.0" ?>
<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.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Hello</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
③在src/main/java/com/atguigu/maven目录下新建文件Hello.java
package com.atguigu.maven;
public class Hello {
public String sayHello(String name){
return "Hello "+name+"!";
}
}
④在/src/test/java/com/atguigu/maven目录下新建测试文件HelloTest.java
package com.atguigu.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);
}
}
⑤
a)打开cmd命令行,进入Hello项目根目录(pom.xml文件所在目录)执行 mvn compile命令,查看根目录变化
b)cmd 中继续录入mvn clean命令,然后再次查看根目录变化
c)cmd 中录入 mvn clean compile命令, 查看根目录变化
d)cmd 中录入 mvn clean test命令,查看target目录变化
e)cmd 中录入 mvn clean package命令,查看target目录变化
3.5 : 第二个Maven项目
①新建第二个项目模块目录及约定的目录结构
HelloFriend
--src
-----main
---------java
---------resources
-----test
---------java
---------resources
--pom.xml
②在项目HelloFriend根目录建立pom.xml
<?xml version="1.0" ?>
<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.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloFriend</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
③在src/main/java/com/atguigu/maven目录下新建文件HelloFriend.java
package com.atguigu.maven;
import com.atguigu.maven.Hello;
public class HelloFriend {
public String sayHelloToFriend(String name){
Hello hello = new Hello();
String str = hello.sayHello(name)+" I am "+this.getMyName();
System.out.println(str);
return str;
}
public String getMyName(){
return "John";
}
}
④在/src/test/java/com/atguigu/maven目录下新建测试文件HelloFriendTest.java
package com.atguigu.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import com.atguigu.maven.Hello;
public class HelloFriendTest {
@Test
public void tesHelloFriend(){
HelloFriend helloFriend = new HelloFriend();
String results = helloFriend.sayHelloToFriend("litingwei");
assertEquals("Hello litingwei! I am John",results);
}
}
⑤在HelloFriend目录下执行命令mvn package
系统报错说没有找到依赖。所有依赖的JAR包都应该正确安装到当前的Maven仓库中才能够使用,换句话说,Maven项目都是到当前仓库中去寻找它所依赖的JAR包的。
⑥需要重新构建Hello第一个项目并安装到数据仓库,在命令行Hello根目录下执行mvn clean install
⑦重新在HelloFriend目录下执行命令mvn package
⑧执行其他常用命令:site
03_Maven核心概念_02
1、仓库配置
增加一个仓库,在项目Pom.xml中添加如下:
&l