1.解压部署Maven核心程序
Maven最新版本下载链接:http://maven.apache.org/download.cgi
Linux系统下载: apache-maven-3.6.1-bin.tar.gz
Window系统下载: apache-maven-3.6.1-bin.zip
下载完成后将apache-maven-3.6.1-bin.zip解压到一个非中文无空格的目录下。
MAVEN_HOME
D:\DevInstall\apache-maven-3.6.1(这是Maven安装路径)
path
D:\DevInstall\apache-maven-3.6.1\bin(Maven安装路径的bin目录)
按window+R输入cmd运行命令提示符窗口,然后输入mvn -v,如若出现如下图所示,则代表环境变量已经配好,Maven安装正确,并可以查看Maven版本。
2.修改相关的setting.xml配置
~表示当前用户的家目录,例如:C:\Users[你当前登录系统的用户名]
<localRepository>[需要创建的本地仓库的目录]</localRepository>
如:
<localRepository>E:/maven/repository</localRepository>
若不在setting.xml配置文件中修改中央仓库的路径的话,所需下载的jar包Maven会直接从Maven官网下载,这样有的时候下载速度比较慢,所以我们把路径修改成国内阿里云的。
在setting中插入如下代码就可以了:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
在setting.xml配置文件插入如下代码:
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
3.Maven工程
-
①目录结构(以Hello工程为例)
-
② 构建过程的几个主要环节
-
[1]清理:删除以前的编译结果,为重新编译做好准备。
-
[2]编译:将 Java 源程序编译为字节码文件。
-
[3]测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
-
[4]报告:在每一次测试后以标准的格式记录和展示测试结果。
-
[5]打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java 工程对应 jar 包,Web 工程对应 war 包。
-
[6]安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
-
[7]部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行。
-
③运行几个基本的Maven命令
mvn compile 编译 mvn clean 清理 mvn test 测试 mvn package 打包
※注意:运行Maven命令时一定要进入pom.xml文件所在的目录!
4.Maven核心概念
在工程的pom.xml文件中使用如下三个标签在 Maven 的仓库中唯一的确定一个 Maven 工程(gav)。
[1]groupid:公司或组织的域名倒序+当前项目名称
[2]artifactId:当前项目的模块名称
[3]version:当前模块的版本
如:
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
如何通过坐标到仓库中查找 jar 包?
[1]将 gav 三个向量连起来
com.atguigu.maven+Hello+0.0.1-SNAPSHOT
[2]以连起来的字符串作为目录结构到仓库中查找
com/atguigu/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar
依赖的目的是什么 ?
当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这是概念上的描述。那么如何在项目 中以依赖的方式引入一个我们需要的 jar 包呢? 答案非常简单,就是使用 dependency 标签指定被依赖 jar 包的坐标就可以了。
如:
<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
依赖的范围
大家注意到上面的依赖信息中除了目标 jar 包的坐标还有一个 scope 设置,这是依赖的范围。依赖的范 围有几个可选值,我们用得到的是:compile、test、provided 三个。
依赖的传递性
A 依赖 B,B 依赖 C,A 能否使用 C 呢?那要看 B 依赖 C 的范围是不是 compile,如果是则可用,否则不 可用。
依赖的排除
如果我们在当前工程中引入了一个依赖是 A,而 A 又依赖了 B,那么 Maven 会自动将 A 依赖的 B 引入当 前工程,但是个别情况下 B 有可能是一个不稳定版,或对当前工程有不良影响。这时我们可以在引入 A 的时 候将 B 排除。
例:
配置方式 :
<dependency>
<groupId>com.atguigu.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
排除后的效果
统一管理所依赖 jar 包的版本
对同一个框架的一组 jar 包最好使用相同的版本。为了方便升级框架,可以将 jar 包的版本信息统一提 取出来
[1]统一声明版本号
<properties>
<atguigu.spring.version>4.1.1.RELEASE</atguigu.spring.version>
</properties>
[2]统一字符集
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
依赖的原则:解决 jar 包冲突
[1]路径最短者优先
[2]路径相同时先声明者优先 (这里“声明”的先后顺序指的是 dependency 标签配置的先后顺序)
创建父工程
创建父工程和创建一般的 Java 工程操作一致,唯一需要注意的是:打包方式处要设置为 pom.
在子工程中引用父工程
<parent>
<!-- 父工程坐标 -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<relativePath>从当前目录到父项目的 pom.xml 文件的相对路径</relativePath>
</parent
如:
此时如果子工程的 groupId 和 version 如果和父工程重复则可以删除。
在父工程中管理依赖
将 Parent 项目中的 dependencies 标签,用 dependencyManagement 标签括起来
如:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
在子项目中重新指定需要的依赖,删除范围和版本号
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
为什么要使用聚合?
将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进 行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。
如何配置聚合?
在总的聚合工程中使用 modules/module 标签组合,指定模块工程的相对路径即可
如:
<modules>
<module>../Hello</module>
<module>../HelloFriend</module>
//......
</modules>