Java-Maven
Java-Maven
基本配置
-
下载
下载链接 下载流程 
-
配置:
配置环境变量,将下载解压的maven 的 bin 添加在 path 中 1
2MAVEN_HOME: C:\SoftwareDownload\Maven\apache-maven-3.8.2\
Path下: %MAVEN_HOME%\bin -
检测
检测命令 检测结果 mvn -version
第一个 MAVEN 应用
-
IDEA Maven配置添加 IDEA-Maven配置 
-
构建一个
maven项目 Maven 项目创建流程 
-
maven仓库地址 -
maven依赖添加步骤 Maven-依赖获取流程gif

镜像配置
-
添加阿里镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<mirrors>
<mirror>
<id>huaweicloud</id>
<mirrorOf>central</mirrorOf>
<name>huawei cloud</name>
<url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors> -
pom.xml为项目配置独立仓库 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!--
pom.xml 里面的仓库与 settings.xml 里面的仓库功能是一样的。
主要区别在于 pom 里面的仓库是个性化的比如一家大公司里的 settings 文件是公用的,所有的项目都用一个 settings 文件, 但各个子项目却会引用不同的第三方库, 所以需要在 pom.xml 里设置自己需要的仓库地址。
-->
基础组件: 仓库
-
远程仓库
/ 中央仓库 -
本地仓库:
C:/User/用户名 /.m2/repository -
本地仓库配置
1
2
<localRepository>D:/ProgramData/Maven/apache-maven-3.8.1/urlslibs</localRepository>仓库分类 
配置全局 JDK
-
在配置文件的
profiles节点内添加如下 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<profiles>
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<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>
<!-- 激活配置 -->
<activeProfiles>
<activeProfile>jdk1.8</activeProfile>
</activeProfiles>
</profiles>这样我们在创建
maven项目时就会自动使用该 jdk版本,目前推荐 jdk1.8
依赖管理
-
管理
依赖管理 
- 依赖传递冲突问题
- 路径优先: 当依赖中出现相同的资源时,
层级越深, 优先级越低, 层级越浅, 优先级越高 - 声明优先: 当资源在相同层级被依赖时,
配置顺序靠前的覆盖配置顺序靠后的 - 特殊优先: 当同级配置了相同资源的不同版本,
后配置的覆盖先配置的
- 路径优先: 当依赖中出现相同的资源时,
- 依赖传递冲突问题
-
依赖范围
-
主程序范围有效
( main文件夹范围内) -
测试程序范围有效
( test文件夹范围内) -
是否参与打包
( package指令范围内) scope 主代码 测试代码 打包 范例 compile(默认)YYYlog4jtestYjunitprovidedYYservlet-apiruntimeYjdbc
-
多环境配置
-
多环境配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76<profiles>
<profile>
<!-- 配置为开发环境 -->
<id>dev</id>
<!-- 构建 -->
<build>
<!-- 构建输出名称 -->
<finalName>dev-war</finalName>
</build>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!-- 激活开发环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 配置为测试环境 -->
<id>test</id>
<!-- 构建 -->
<build>
<!-- 构建输出名称 -->
<finalName>test-war</finalName>
</build>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<!-- 配置为生产环境 -->
<id>procuctEnv</id>
<!-- 构建 -->
<build>
<!-- 构建输出名称 -->
<finalName>proc-war</finalName>
</build>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles> -
打包测试多环境配置
成功使用测试环境打包 
Maven 命令
-
基本命令
mvn命令
资源插件
-
加载
xml文件 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<build>
<resources>
<resource>
<!-- 所在目录 -->
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
1. 默认没有使用 resources 的时候,maven 执行编译代码时,会把 src/main/resources 目录中的文件拷贝到 targer/classes 目录中,对于 src/main/java 目录下的非 java 文件不处理,不拷贝到 target/classes 目录中
2. 我们的程序有需要把一些文件放在 src/main/java 目录中,当我们在执行 java 程序时,需要用到 src/main/java 目录中的文件 需要告诉 maveb 在 mvn compile src/main/java 目录下的程序时, 需要把文件一同拷贝到 target/classes 目录中。此时就需要在 <build> 中加入 <resources> -
将
resources文件夹移动到 src/main/,再进行如下操作,读取数据库时将不会出现NullPointerException资源路径配置 
单元测试
-
测试的是类中的方法,方法都是独立测试
-
单元测试
1
2
3
4
5
6
7
8
9import org.junit.Test;
public class TestMaven {
public void testMaven() {
System.out.println("我是 maven 测试 ");
}
}
打包
-
命令
1
2
3
4
5
6mvn package
# 三种
war # web
jar
pom # 聚合 -
结果
打包为 war,在 linux服务器 Tomcat部署 
-
打包输出影响信息
1
2
3
4
5
6
7<!-- <groupId>com.coderitl</groupId> -->
<artifactId>FileUpLoad</artifactId>
<version>1.0-SNAPSHOT</version>
<name>FileUpLoad</name>
<!-- 配置打包形式 -->
<packaging>war</packaging>
插件
-
pom里配置 tomcat插件 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15web:
需配置 => <packaging>war</packaging>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<hostName>localhost</hostName> <!-- Default: localhost -->
<port>8080</port> <!-- 启动端口 Default:8080 -->
<path>/</path> <!-- 访问应用路径 Default: /${project.artifactId}-->
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>-
无需下载系统
tomcat,运行插件中的tomcat运行插件中的 tomcat
-
-
war包插件 -
jar包插件 -
编译插件
1
2
3
4
5<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin> -
插件无法下载
-
配置代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<proxies>
<proxy>
<id>httpproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>127.0.0.1</host>
<port>7890</port>
</proxy>
<proxy>
<id>httpsproxy</id>
<active>true</active>
<protocol>https</protocol>
<host>127.0.0.1</host>
<port>7890</port>
</proxy>
</proxies> -
终端执行如下命令
1
2# 你可以确保项目所需的依赖项都已经被正确地解决和下载。这是在开始构建或运行项目之前一个常用的步骤,以确保依赖项的可用性和一致性。
mvn dependency:resolve
-
Git 下载的项目运行方式
主要是对环境进行配置,
即 下载依赖、jdk、xxx.iml 文件、数据库配置等
| 项目运行依赖配置 |
|---|
![]() |
Maven 进阶
分模块开发
-
意义
将原始模块按照功能拆分成若干个子模块,
方便模块间的相互调用, 接口共享 -
实现多模块
-
创建
maven项目 创建 A 模块 
-
模块之间通过依赖引入
创建 maven
-
B,模块引用 A 模块 在 A模块的 maven 生命周期下点击 install,然后在 B 模块引用 A 的坐标, 刷新依赖 使用 A模块在 B中 添加 A模块依赖 

-
依赖管理
-
依赖具有传递性
-
直接依赖: 在当前项目中通过依赖配置建立的依赖关系
-
间接依赖: 被资源的资源如果依赖其他资源,
当前项目简介依赖其他资源 直接依赖与间接依赖 
-
依赖关系查看
依赖关系查看 
-
私服
-
Nexushttps://help.sonatype.com/repomanager3/product-information/download
下载 
-
启动
1
2# bin/ => cmd
nexus /run nexuslatest-win64\nexus-3.20.1-01\bin启动成功标志 

-
访问
-
配置文件位置
latest-win64\nexus-3.20.1-01\etc => 修改端口号
-
私服仓库
私服仓库 
-
仓库分类
- 宿主仓库
hosted- 保存无法从中央仓库获取的资源
- 自主研发
- 第三方非开源项目
- 保存无法从中央仓库获取的资源
- 代理仓库
proxy- 代理远程仓库,
通过 nexus访问其他公共仓库, 例如中央仓库
- 代理远程仓库,
- 仓库组
group- 将若干仓库组成一个群组,
简化配置 - 仓库组不能保存资源,
属于设计型仓库
- 将若干仓库组成一个群组,
- 宿主仓库
-
登录获取用户名和密码
登录获取用户名 ( admin)和密码 修改新密码 

-
资源上传
-
idea配置 idea配置 
-
nexus仓库 -
新建仓库
新建仓库 选择如下的 hosted

-
创建
hosted的 release仓库 release完成版的 添加到 public组中 

-
创建
hosted的 snapshotssnapshots,之后添加到 maven-public
-
-
-
本地配置私服
-
maven配置 1
2
3
4
5
6
7
8
9
10
11
12<servers>
<server>
<id>coderitl-release</id>
<username>admin</username>
<password>root</password>
</server>
<server>
<id>coderitl-snapshots</id>
<username>admin</username>
<password>root</password>
</server>
</servers> -
什么样的资源来自于私服
1
2
3
4
5<mirror>
<id>nexus-coderitl</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
-
-
配置发布到私服
1
2
3
4
5
6
7
8
9
10
11<!-- idea 的 pom 中配置 -->
<distributionManagement>
<repository>
<id>coderitl-release</id>
<url>http://localhost:8081/repository/coderitl-release/</url>
</repository>
<snapshotRepository>
<id>coderitl-snapshots</id>
<url>http://localhost:8081/repository/coderitl-snapshots/</url>
</snapshotRepository>
</distributionManagement>-
发布流程
发布流程 
-
发布到私服
点击发布 查看 

-
-