(1)maven介绍
什么是maven?
maven:
项目管理构建工具。
maven通过一个Project Object Model,项目对象模型的概念来管理整个项目。pom.xml
maven作用
项目管理。
管理项目的jar包。
管理项目的生命周期。
(清理clean、编译compile、测试test、打包package、安装install、部署deploy)
项目构建。
分模块构建项目。
常见的项目管理构建工具
ant 最早项目管理构建工具。
maven 目前最流行的项目管理构建工具。在java社区引用广泛。
gradle 最早兴起于移动端开发。现在在java中也会有应用。
小结
maven项目管理构建工具。
(2)仓库
maven的仓库
存储jar包的地方就是仓库。
仓库分类
本地仓库
远程仓库
中央仓库
私服
第三方公共库。举例:阿里云
项目如何查找jar包?

(3)坐标
坐标
maven世界中通过坐标定位全球唯一的一个组件。
坐标组成
groupId:定义当前Maven项目隶属项目、组织
artifactId:定义实际项目中的一个模块
version:定义当前项目的当前版本
packaging:定义该项目的打包方式(pom/jar/war,默认为jar)
(4)依赖 A 依赖范围、依赖传递【重点】
依赖的作用
项目添加依赖,就相当于把jar包拷贝到项目中。
依赖范围
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>依赖范围</scope>
</dependency>

compile 默认依赖范围,表示依赖的组件在编译、测试、运行都有效。会打入war包
test 测试依赖范围,只在测试时期有效。不会打入war包
provided 容器已提供范围,在编译有效,实际运行无效。(servlet-api).不会打入war包
runtime 运行范围。编译无效,实际运行有效。会打入war包。
依赖传递
mavenA依赖junit,依赖范围是compile,mavenB依赖mavenA,问:mavenB对junit是否有依赖?有
mavenA依赖junit,依赖范围是test,mavenB依赖mavenA,问:mavenB对junit是否有依赖?没有
mavenA依赖junit,依赖范围是provided,mavenB依赖mavenA,问:mavenB对junit是否有依赖?没有
mavenA依赖junit,依赖范围是runtime,mavenB依赖mavenA,问:mavenB对junit是否有依赖?有
总结:
项目依赖的包,只有compile、runtime范围,才会发生依赖传递。
(5)依赖 B 可选依赖、依赖冲突、依赖排除
可选依赖
依赖冲突
2直,取下
1直1间,取直
2间,取上
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.itcast</groupId>
<artifactId>mavenB</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>cn.itcast</groupId>
<artifactId>mavenA</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--1) 如果2个直接依赖,依赖了同一个坐标不同版本的组件,以配置顺序的下方为主。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>-->
<!--2) 如果一个直接依赖一个间接依赖,依赖了同一个坐标不同版本的组件,以直接依赖为主-->
<!--直接依赖log4j-1.2.16.jar
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>-->
<!--间接依赖log4j-1.2.17.jar
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>-->
<!--2) 如果2个间接依赖,依赖了同一个坐标不同版本的组件,以配置顺序的上方为主。-->
<!--间接依赖spring-core-4.3.8.jar-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!--间接依赖spring-core-5.0.2.jar-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
</project>
依赖排除
需求:要求使用spring-core-5.0.2.jar。配置如下:

解决1:把spring所有依赖版本都改为5.0.2 【一定要这样用】
解决2:调用位置。把间接依赖spring-core高版本的放到上方。
解决3:再添加spring-core的直接依赖,锁定版本。
解决4:使用依赖排除
<!--2) 如果2个间接依赖,依赖了同一个坐标不同版本的组件,以配置顺序的上方为主。-->
<!--间接依赖spring-core-4.3.8.jar-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.8.RELEASE</version>
<!--排除spring-webmvc组件对spring-core的间接依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--间接依赖spring-core-5.0.2.jar-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
(6)分模块创建项目一继承与聚合【重点】
分模块创建项目,预览好处

继承与聚合的概念
maven项目的继承
作用:抽取公用配置。
聚合
作用:聚集合并各个子模块作为一个整体运行。
小结
继承,主要是为了消除重复配置,统一管理各个组件的版本。
聚合,分模块构建项目首先要创建聚合项目,再创建聚合的子模块。可以快速构建运行项目
私服(1) 介绍【了解】
私服
安装
上传
下载

私服(2)安装
1.1. 下载
Nexus的官网http://www.sonatype.com/,下载Nexus Repository Manager OSS 2.xx。资料中已经下载“nexus-2.12.0-01-bundle.zip”。也可以使用“nexus-2.1.2.war”直接放置在tomcat的webapps目录下。
1.2. 安装
解压“nexus-2.12.0-01-bundle.zip”;Nexus默认的端口可以在配置文件中修改,路径为:nexus-2.12.0-01\conf\nexus.properties;里面的内容如下:

1.3. 启动
在路径“nexus-2.12.0-01\bin\jsw\windows-x86-64\”目录下:双击console-nexus.bat为后台启动Nexus;双击“install-nexus.bat”则会注册为一个windows服务。
1.4. 访问
当Nexus启动后,可以在浏览器中输入:http://localhost:8081/nexus
点击“Log In”

输入默认的帐号:admin,密码:admin123

点击“Repositories”浏览各个仓库。


1.点击如下文件

2.检查服务是否有启动。默认会启动。

3.访问
图1:访问地址
http://localhost:8081/nexus
图2:登陆。用户名/密码: admin/admin123

4.唯一需要修改的地方





