1. maven下载与安装
maven下载页面:https://maven.apache.org/download.cgi
或者你也可以选择之前的版本:
然后里面选择自己对应的版本下载即可:
指定本地仓库:
本地仓库默认值:用户家目录/.m2/repository。
如果想指定其他目录配置方式如下:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\software\maven-repository</localRepository>
配置阿里云提供的镜像仓库:
Maven 下载 jar 包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让 Maven 下载 jar 包的时候速度更快。配置的方式是:
- 将原有的例子配置注释掉
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror> -->
- 加入自己的配置
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置基础 JDK 版本:
如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5,而我们熟悉和常用的是 JDK 1.8 版本。修改配置的方式是:将 profile 标签整个复制到 settings.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>
配置环境变量:
Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。
通过 mvn -v 验证是否成功配置maven
2. 依赖传递
当A项目依赖B项目时,B项目的依赖会被传递到A项目。
当依赖中出现依赖冲突:
若依赖中,同时引入了某个依赖的不同版本,后配置的覆盖先配置的,而不是按版本级别。
当依赖中出现相同的资源时,层级越深,优先级越低。
下图中,shop-user引入了 log4j:1.2.17 的版本,
而shop-order也引入了log4j,且shop-order也引入了 log4j:1.2.12 。
此时在shoo-order里面,log4j:1.2.17 这个版本相对来说属于另一个层级的比起 log4j:1.2.12 是更深的层级,所以优先级低,就不会采用它的版本。
当资源在相同层级被依赖时,先配置的覆盖后配置的。
下图中,shop-user引入了 log4j:1.2.17 的版本
shop-order引入了 log4j:1.2.12 的版本
而shop-product同时引入了他俩,先引入shop-order,后引入shop-user。 它们相对shop-product来说,都是属于第3层级的。按照先配置的覆盖后配置的。所以shop-order中的log4j版本生效。
3. 排除依赖
4. 依赖范围
https://www.bilibili.com/video/BV1Ah411S7ZE?p=13&vd_source=61b6fb4e547748656e36b17ee95125fb
5. 模块聚合
若多个模块之间具有依赖,其中一个模块更新了,重新install,其他模块是不知道的。
聚合,就是通过采用一个新模块(聚合模块),将它们都放到其下,在聚合模块进行编译,这样一来所有模块都编译。
下图,有../的原因是因为聚合模块和该模块是同一层级,所以加了../
6. 模块继承
通过在聚合模块来定义各种依赖版本,其他模块继承它。使用的时候,直接引入依赖,而不需要指定版本。
7. 属性定义
8. maven常用命令
9. 打包
boot使用这个插件可以将项目打包成一个可运行的jar,无需在目标服务器安装tomcat等
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>