maven

本文详细介绍了Maven的基础概念、安装配置、依赖管理、阿里镜像设置,以及如何在IntelliJ IDEA中解决乱码问题和集成Tomcat。还涵盖了Maven项目分类,如jar、war和pom工程,以及父子工程、聚合工程的管理和部署技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven

1.maven入门

1.1、Maven 简介

Maven 是一个 java 项目管理工具和自动化构建工具,还可进行 jar 包依赖管理。

Maven 官网:https://maven.apache.org/

1.2、Maven 的安装

第一步:解压 maven 到指定的目录[无中文、无空格、无特殊字符目录

第二步:配置 maven 的环境变量

第三步:在 cmd 命令行通过 mvn -v 检查 maven 是否安装成功

1.3、配置 Maven 的阿里镜像

配置:maven 安装目录/conf/settings.xml

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
</mirror>

2.Maven 依赖

2.1、Maven 的本地仓库

仓库[repository]:存放物品的容器
maven 的仓库:用来存放 jar 包的一个文件
maven 本地仓库[local repository]:在当前计算机上一个存放 jar 包的文件夹
maven 本地仓库默认配置:maven 安装目录/conf/settings.xml
Default: ${user.home}/.m2/repository

修改 maven 的本地仓库:

第一步:在其他盘(c盘)创建一个文件夹
第二步:maven安装目录/conf/settings.xml配置local repository标签指向新文件夹

2.2、Maven 仓库划分

maven 仓库分为:本地仓库、远程仓库

本地仓库[local repository]:在当前计算机上一个存放 jar 包的文件夹

远程仓库[remote repository]:不在当前计算机上一个存放 jar 包的文件夹

私服[nexus]:一般是在局域网中使用[公司内部]

中央仓库[central repository]:在美国,据说里面有几十亿个 jar 包

镜像仓库[mirror]:分布在七大州,各大互联网公司一般都会提供镜像服务。用
来分摊中央仓库压力、加快 jar 包的下载速度。

2.3、Maven 的坐标与依赖

一、Maven 坐标
平面坐标(x,y):用来确定平面中的一个点。
空间坐标(x,y,z):用来确定空间中的一个点。
Maven 的坐标:用来当前项目打成的 jar 包在本地仓库中的位置的。

简称GAV坐标
groupId: 公司域名反写 | 公司域名反写.项目名
artifactId: 项目名 | 项目名-模块名
version: 0.0.1.snapshot|1.0.0.RELEASE(默认值)

二、maven 的依赖

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>

三、maven 的坐标与依赖的区别

Maven 的坐标:用来当前项目打成的 jar 包在本地仓库中的位置的。
maven 依赖:用来确定当前项目所需要的 jar 包在本地仓库中的位置

四、如何由 maven 的坐标与依赖去本地仓库找对应的 jar 包

jar 包所在的目录:groupId+artifactId+version

如:com/jdc/maven/Hello/0.0.1-SNAPSHOT

jar 包的名称:artifactId-version 如:Hello-0.0.1-SNAPSHOT.jar

四、Maven 项目的分类

jar 工程: 打成 jar 包,当当前项目被其它项目依赖的时候,就打成 jar 包

war 工程:打成 war 包, 当前项目需要部署到 tomcat 服务器时候打成 war

pom 工程:打成 pom 包,通常父工程和聚合工程会打成 pom 工程。

注:

maven中jar 包依赖:推荐地址:https://mvnrepository.com/

3、Maven 与 Idea 整合

3.1、解决控制台乱码问题

  • 点击Help => Edit custom VM Options,在最后面添加
    -Dfile.encoding=UTF-8
  • 点击右上角 Edit Configurations,在tomcat配置中的 VM option中添加
    -Dfile.encoding=UTF-8
  • 在Startup/Connection选项卡的Run和Debug添加一个key为JAVA_TOOL_OPTIONS, value为
    -Dfile.encoding=UTF-8的环境变量
  • 保存后重启idea,可以发现控制台中文乱码显示正常了

3.2、Tomcat 插件

<build>
<plugins>
	<plugin>
		<groupId>org.apache.tomcat.maven</groupId>
		<artifactId>tomcat7-maven-plugin</artifactId>
		<version>2.2</version>
		<configuration>
			<!-- path标签设置项目名-->
            <path>/ssm</path>
            <!-- port标签设置端口号-->
            <port>8888</port>
            <!-- 该参数设置GET请求乱码问题 -->
            <uriEncoding>UTF-8</uriEncoding>
		</configuration>
	</plugin>
</plugins>
</build>

3.3、依赖具有传递性

传递的原则:
路径不同时,路径短者优先 路径相同时,先声明者优先

解决 Jar 包冲突的三种解决方案:
第一种:路径不同时,路径短者优先
第二种:路径相同时,先声明者优先
第三种:排除法

3.4、父工程

3.4.1、在子工程中引用父工程
<parent>
    <!-- 父工程坐标 -->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <relativePath>从当前目录到父项目的pom.xml文件的相对路径			</relativePath>
</parent>

子工程的 groupId 和 version 如果和父工程重复则可以删除。

3.4.2、在父工程中管理依赖

将 parent 项目中的 dependencies 标签,用 dependencyManagement 标签括起来

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3.4.3、父工程统一管理 jar 包版本问题

借助于 properties 标签,便于管理 jar 包版本信息,防止各个模板分别引入依赖造成版本不一致问题。比如:
@GetMapping 在 spring4.3.x 版本以下中没有,在 spring4.3.x 版本以后才出现,所以万一在某个模块中使用了 4.3.x 版本以下的 spring,那@GetMapping 注解是没法使用的。

父工程

<!-- 在properties标签内部可以设置jar包版本信息 -->
<properties>
<!-- 标签名可以随意写【见名知意】,值不是随便写的 -->
<junit.version>4.9</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 通过${}表达式引用上面properties中定义好的版本号信息-->
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

在子项目中重新指定需要的依赖,删除范围和版本号

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

3.5、聚合工程

聚合工程:必须打成 pom 包,聚合是用来管理其它工程的工程

<!-- 聚合工程是把其它工程当做一个模块管理的 -->
<modules>
<module>../app01/pom.xml</module>
<module>../app02/pom.xml</module>
<module>../app03/pom.xml</module>
</modules>

3.6、在同一个窗口创建父子工程的两种方式

第一种:先创建一个空工程,然后在空工程目录中创建父模块、子模块
第二种:先创建父工程,然后选中父工程,创建子模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值