01.Maven学习笔记–安装与核心概念
安装
官网下载 Maven
http://maven.apache.org/download.cgi
解压
配置环境变量
Windows
新建系统 MAVEN_HOME 变量,并把 Maven 路径拷贝上去:
变量名: MAVEN_HOME
变量值: D:\develop\apache-maven-3.5.4
配置 Path 变量,Maven 路径到 bin:
变量名: Path
变量值: %MAVEN_HOME%\bin
配置 MAVEN_OPTS 变量:
变量名: MAVEN_OPTS
变量值: -Xms128m -Xmx512m -Dfile.encoding=UTF-8
Linux (CentOS 7)
#解压改名
tar -zxvf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/maven3
#配置环境变量
vim /etc/profile
#在适当的位置添加
export MAVEN_HOME=/usr/local/maven3
export PATH=$PATH:$MAVEN_HOME/bin
#保存退出后运行下面的命令使配置生效,或者重启服务器生效
source /etc/profile
检查安装是否成功
mvn --version
Maven 编译
编写 pom 文件基础配置
<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>demo.yangxu</groupId>
<artifactId>yangxu-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
参考:
http://maven.apache.org/pom.html#The_Basics
mvn 编译命令
mvn compile
Maven 采用了约定的方式从指项目结构中获取源码与资源文件进行编译打包。
- 主源码文件:${project}/src/main/java
- 主资源文件:${project}/src/main/resources
- 测试源码文件:${project}/src/test/java
- 测试资源文件:${project}/src/test/resources
新建目录
#主源码目录
mkdir -p src/main/java
#主资源目录
mkdir -p src/main/resources
#测试源码目录
mkdir -p src/test/java
#测试资源目录
mkdir -p src/test/resources
新建 package
cd src/main/java
mkdir -p demo/yangxu
新建 .java 源码文件
cd demo/yangxu
vim Hello.java
Hello.java 内容:
package demo.ynagxu;
public class Hello {
public String sayHello(String name){
return name;
}
}
执行 Maven 编译
cd /d/mavenLearn/yangxu-maven
mvn compile
查看编译后的 target 目录下所包含的文件
cd target
find -type f
新建 .properties 配置文件
cd /d/mavenLearn/yangxu-maven
cd src/main/resources
vim app.properties
app.properties 配置文件内容:
name = yangxu
执行 Maven 编译
cd /d/mavenLearn/yangxu-maven
mvn compile
查看编译后的 target 目录下所包含的文件
cd target
find -type f
Maven 打包
#mvn 打包命令
mvn package
执行 mvn package
命令会自动进行编译:
mvn clean
mvn package
Maven 单元测试
Maven 对测试类作了约定,必须是以 Test 开头的类名以及以 test 开头的方法。
新建 package
cd /d/mavenLearn/yangxu-maven
cd src/test/java
mkdir -p demo/yangxu
新建 .java 源码文件
cd demo/yangxu
vim TestHello.java
TestHello.java 内容:
package demo.ynagxu;
public class TestHello {
public void testSayHello(){
System.out.println("run test .....");
}
}
执行测试
cd /d/mavenLearn/yangxu-maven
mvn clean; mvn test
查看测试报告
cd target/surefire-reports
ll
vim demo.ynagxu.TestHello.txt
Maven 依赖管理
在 pom 文件中添加 JUnit 依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
JUnit 测试
修改测试类,引入 JUnit 类,之前 Maven 对测试类作的约定失效。
演示测试不通过的情况
cd /d/mavenLearn/yangxu-maven
cd src/test/java
cd demo/yangxu
vim TestHello.java
package demo.ynagxu;
import org.junit.Assert;
import org.junit.Test;
public class TestHello {
@Test
public void testSayHello(){
System.out.println("run test .....");
//演示测试不通过的情况
Assert.assertEquals("1","2");
}
}
mvn clean test
演示测试通过的情况。
cd /d/mavenLearn/yangxu-maven
cd src/test/java
cd demo/yangxu
vim TestHello.java
package demo.ynagxu;
import org.junit.Assert;
import org.junit.Test;
public class TestHello {
@Test
public void testSayHello(){
System.out.println("run test .....");
//演示测试通过的情况
Assert.assertEquals("2","2");
}
}
mvn clean test;
Maven 仓库
Maven 在执行 test 命令时动态地从本地仓库中引入 JUnit 的 jar 包,如果找不到就会去远程仓库下载,然后再引入。
默认远程仓库
默认远程仓库 Central Repository 其配置在
${MAVEN_HOME}\lib\maven-model-builder-3.5.4.jar\org\apache\maven\model\pom-4.0.0.xml
本地仓库位置
本地仓库位置默认在 ~/.m2/respository 下。
可以通过以下命令查看本地仓库路径:
mvn help:effective-settings
修改 ${MAVEN_HOME}/conf/settings.xml 可指定仓库目录:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:\Users\telyfox\.m2\repository</localRepository>
</settings>
修改 ~/.m2/settings.xml 也可对 Maven 进行配置,且优先级要比 ${MAVEN_HOME}/conf/settings.xml 高。
~/.m2/settings.xml 是当前用户对 Maven 的配置,${MAVEN_HOME}/conf/settings.xml 是 Maven 的全局配置。
当这两个文件同时存在的时候,那么对于相同的配置信息,用户目录下面的 settings.xml 中的定义会覆盖 Maven 安装目录下面的 settings.xml 中的定义。用户目录下的 settings.xml 文件一般是不存在的,但是 Maven 允许我们在这里定义我们自己的 settings.xml。如果需要在这里定义我们自己的 settings.xml,可以把 Maven 安装目录下面的 settings.xml 文件拷贝到用户目录的 .m2 目录下,然后改成自己想要的样子。
如果在 ~/.m2 目录下创建了 settings.xml,最好在 IDE 中把 User settings file 指向 ~/.m2/settings.xml,避免发生问题。
Maven 核心功能总结
- Maven 核心作用是编译、测试、打包;
- 根目录下的 pom.xml 文件设置分组 Id 与 artifactId;
- Maven 基于约定的方式从项目中获取源码与资源文件进行编译打包;
- 对于项目所依懒的组件先从本地仓库引用,如果本地仓库不存在则会从远程仓库下载。