Maven

Maven

Maven

基于java平台的、自动化构建工具

清理:删除编译结果、为重新编译做准备
编译:java编译成class
测试:对项目中关键点进行测试、用测试代码去测试开发代码
报告:将测试的结果进行显示
打包:将项目中包含的多个文件压缩成一个文件、用于安装和部署
安装:将打成的包放到 本地仓库、供其他项目使用
部署:将打成的包方到 服务器上运行

Maven作用

  • 管理jar

添加第三方jar
自动关联下载所有依赖的jar、并且不会冲突
通常下载一个jar、先在本地仓库中下载、如果本地仓库中不存在、则在联网去中央仓库或中央仓库镜像去下载

  • 将项目拆分成若干个模块

Maven配置流程

  • 环境变量配置-

path配置Maven的bin目录

  • conf/settings.xml配置属性
    配置阿里云镜像和修改本地仓库
1
2
3
4
5
6
7
<!-- 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:/Maven/IDEA jar</localRepository>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

Maven结构

src/main/java 程序功能代码
src/main/resourses 资源代码、配置代码
src/test 测试代码
pom.xml 项目对象模型(把项目看成一个对象)

1
2
3
4
5
6
7
8
<!--    大项目名-->
<groupId>com.dream.xiaobo</groupId>
<!-- 子模块名-->
<artifactId>testMaven</artifactId>
<!-- 版本号-->
<version>1.0-SNAPSHOT</version>
<!-- 名字-->
<name>testMaven</name>

Maven常见命令

  • 编译命令(只编译main目录java文件)
1
mvn compile
  • 测试
1
mvn test
  • 打包(jar/war)
1
mvn package
  • 存入本地仓库(供其他模块使用)
1
mvn install
  • 删除target
1
mvn clean

Maven依赖

maven依赖一般都是在pom.xml中进行引入操作

1
2
3
4
5
6
7
8
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
  • 依赖的范围

complie(默认)
test
provided

  • 依赖排除

我们来举个例子啊、就好比引入a.jar时他依赖于b.jar、所以会自动引入、但我们就是不想要b.jar、所以可以手动排除掉

1
2
3
4
5
6
7
8
9
10
11
12
13
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>

<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>

</dependency>
  • 依赖的传递

A.jar-B.jar->C.jar 要使 A.jar ->C.jar:当且仅当 B.jar 依赖于C.jar的范围是compile

  • 依赖原则

路径最短优先原则
路径长度相同时:

在同一个pom.xml文件中有2个相同的依赖(覆盖):后面声明的依赖 会覆盖前面声明的依赖
如果是不同的 pom.xml中有2个相同的依赖(优先):则先声明的依赖 ,会覆盖后声明的依赖

  • 多个maven项目(模块)之间依赖

现将被依赖的项目install到仓库
然后另一个项目导入依赖即可

1
2
3
4
<dependency>
<groupId>com.dream.xiaobo</groupId>
<artifactId>testMaven</artifactId>
</dependency>
  • Maven统一项目jdk版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<profiles>
<profile>
<id>jdk-18</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>
  • 动态配置
1
2
3
4
 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<xiaobotest>4.0</xiaobotest>
</properties>
1
2
3
4
5
6
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${xiaobotest}</version>
<scope>test</scope>
</dependency>

Maven打包种类

jar

war

pom

Maven实现项目之间继承

  • 父类

建立父类工程、其父类工程打包方式必须为pom
在父类中pom.xml中编写

1
2
3
4
5
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
  • 子类

继承一个父工程、加入父工程gav
当前项目中pom.xml导入父工程pom.xml相对路径
当前项目中pom.xml使用父类依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<parent>
<!-- 1加入父工程坐标gav -->
<groupId>大项目名</groupId>
<artifactId>小模块名</artifactId>
<version>版本</version>
<!-- 2当前工程的Pom.xml到父工程的Pom.xml之间的 相对路径 -->
<relativePath>../模块名/pom.xml</relativePath>
</parent>

<dependency>
<!-- 声明:需要使用到父类的junit (只需要ga) -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>

Maven的聚合

将多个子工程和起来

  • 使用方法

建立一个总工程、打包方式为pom
进行配置
配置完聚合之后,以后只要操作总工程,则会自动操作 改聚合中配置过的工程

1
2
3
4
5
6
<modules>
<!--项目的根路径 -->
<module>../Maven1</module>
<module>../Maven2</module>

</modules>

正确的开始、微小的长进、然后持续、嘿、我是小博、带你一起看我目之所及的世界……

-------------本文结束 感谢您的阅读-------------

本文标题:Maven

文章作者:小博

发布时间:2021年06月29日 - 22:44

最后更新:2021年06月29日 - 22:46

原始链接:https://codexiaobo.github.io/posts/120011996/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。