Maven
Maven的下载地址:https://archive.apache.org/dist/maven/binaries/apache-maven-3.2.2-bin.zip
安装方法:
- 需要配置
M2_HOME
环境变量指定为Maven的bin目录,在PATH变量中 - 需要配置
JAVA_HOME
环境变量指定为JAVA的bin目录,在PATH变量中 - 需要配置
CLASSPATH
环境变量为.;%JAVA_HOME%\lib\dt.jar.tools.jar
Maven的联网问题
- 通过Maven去下载的话,如果在网络较慢的情况下特别慢
- 更改Aliyun的镜像源
Maven默认的配置目录是~/.m2/repository
,需要修改存储位置(localRepository)和镜像(mirror);默认配置文件在:Maven/conf/setting.xml,更改如下
<localRepository>D:\编程根目录\Java\JavaForHadoop\RepMaven</localRepository>
更改镜像源
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<blocked>true</blocked>
</mirror>
</mirrors>
IDEA 配置
- 进入在
setting
->Build, Execution, Deployment
->Build Tools
->Maven
- 修改
Use Setting File
为Maven Settings目录
Maven的生命周期
- Clean:清理,将之前编译的结果清理掉
- Compile:编译,将主程序的.java编译成.class文件
- Test:编译测试程序并运行生成报告
- Package:打包,将程序打成jar包或者是war包
- Install:安装将打成jar的包安装的Maven的本地仓库
指定编译版本
<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.comilerVersion>1.8</maven.compiler.comilerVersion>
</properties>
</profile>
Maven的核心概念
graph TD; Maven-->POM Maven-->约定目录结构 Maven-->坐标 Maven-->依赖 Maven-->仓库 Maven-->生命周期 Maven-->插件和目标 Maven-->继承 Maven-->聚合POM:Project Object Model(项目对象模型)。将Java工程对象封装成对象
坐标(GAV):使用如下的三个向量在Maven的仓库中唯一的确定的Maven的工程
(1)GroupId:公司或组织的域名倒序+当前项目名称
(2)ArtifactId:当前项目的名称
(3)Version:当前的模块的版本
在项目的pom.xml
中存储,存储方式为GroupId > ArtifactId > Version > ArtifactId+Version.jar
依赖:<scope></scope>
- Compile:默认,可以在main和Test同时使用依赖
- Test:尽可以在Test下使用依赖
- Provided:服务器可提供的Jar包范围
依赖的传递性,A->B->C
项目包 | Scope | 是否会传递 |
---|---|---|
A | Compile | 是 |
B | Test | 否 |
C | Provided | 否 |
Jar包冲突,两点原则
- 路径最短者优先
- 先引用者优先
排除传递依赖
<dependency>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
一次定义多次使用类似于变量的定义
<properties>
<mysql-version>3.1.2</mysql-version>
</properties>
使用
<version>${mysql-version}</version>
仓库
- 本地仓库:为当前本机电脑上提供Maven的服务
- 远程仓库:私服(架设到当前局域网环境下),为当前局域网的范围内所有Maven工程服务;中央仓库:架设到Internet上,为全世界的Maven工程服务
插件和目标
- Maven的核心程序都是交给插件去做的
- 每一个插件都可以实现多个功能,
- 一个插件可以实现的功能称作为一个插件的目标
打包
- 父工程打的包是pom包
- web工程大的是war包
- Java工程打的包是Jar包