Maven详解

本文探讨了Maven在项目开发中的关键作用,如自动下载依赖、标准化项目结构及简化jar包管理。学习Maven能提升开发效率,避免IDE规范问题和磁盘空间浪费。

maven

引言:在开发项目时,必不可少的需要用到很多的jar,之前jar的来源途径是授课讲师给予。

​ 疑问:1.他从哪儿拿来的jar

​ 2.他凭什么拿到的jar从来一个不少

3.为什么不教给我们找jar包的方法,让我们自己找

maven的作用:我们可以命令maven自动帮我们下载我们需要的jar,我们只需要告诉maven我们要哪个jar

maven是什么

Maven是Apache开源组织提供的一个基于POM(Project Object Model)的项目构建(Build)工具,所谓的构建指的是代码清除(clean)、编译(compile)、测试(test)、打包(package)、安装(install)、部署(deploy)等一系列流程

POM(Project Object Model):项目对象模型 把项目当作一个对象管理

代码清除(clean):将所有class文件删除

测试(test):将所有jUnit测试执行一遍

打包(package):java 打成jar包 web项目打成war包

安装(install):将项目部署到本地tomcat中

部署(deploy):远程部署,将项目部署到远程tomcat中

这些事儿,不学maven也能干,那为什么要浪费时间学习maven呢?

使用maven有什么好处

一.摆脱IDE的结构规范

IDE:集成开发环境,说白了就是辅助编程工具,eclipse,myeclipse,idea

 

maven项目的结构

src/main/java 源代码目录

src/main/resources 配置文件目录

src/main/webapp web相关的文件

src/test/java 测试相关代码

src/test/resources 测试配置文件

pom.xml 核心配置文件 写坐标

target 编译文件输出目录 class文件存放位置

 

二.自动管理依赖

依赖(dependency):jar包

1.自动下载jar包

咱们只需要告诉maven你需要的jar包是什么,maven自动帮你下载

工作流程

如何告诉maven咱们所需要的jar是什么

maven坐标:

​ 1.组织名 groupid 指定哪个公司开发的jar

​ 2.项目名 artifactid 指定要下载哪个jar

​ 3.版本号 version 指定下载哪个版本

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
 <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
      
     
      <!-- jar 的使用范围
        compile :任何时间都有效 默认
        provided:编译和测试时有效,运行无效
        runtime:运行和测试时有效
        test:测试时有效
     -->
      <scope></scope>
    </dependency>

查找jar坐标的网址:https://mvnrepository.com/

2.自动下载jar包所依赖的jar包

jar包与jar包之间是有依赖关系的

比如: mybatis.jar的正常工作依赖于cglib.jar,那么当你想使用mybatis.jar时,就必须先下载cglib.jar

a.jar---->b.jar----->c.jar---->d.jar 如果你想使用a.jar,就必须下载bcd

maven可以实现自动管理jar,你只需要告诉maven你要使用a.jar,maven会自动帮你下载bcd

3.节省磁盘空间

我们使用jar包,只是使用其中的类和方法,只要确保可以使用到,其实并不需要每个项目中都复制一份jar包

maven的使用

maven的安装

1.maven官网下载 Maven – Download Apache Maven

2.在本地解压

3.配置环境变量

​ MAVEN_HOME : maven的安装目录

​ PATH : maven的bin目录

4.验证是否安装成功

​ cmd中输入 mvn -version

 

setting.xml相关内容

手动配置本地仓库地址

1.在合适的位置创建一个文件夹,文件名自定义

 

2.配置setting文件

 

2.maven镜像仓库配置

 

阿里镜像仓库的使用

在setting.xml中配置

 

第一个maven Demo

创建maven项目

。。。。

添加依赖

1.去中心仓库找你需要的依赖

2.将依赖添加到pom.xml

 

3.刷新项目

pom文件详解

 

maven通用调错

主要原因:jar包下载失败

具体原因有很多,网络异常,本地电脑异常,jar包不支持下载,交换机炸了,导致jar包下载失败,此时应该怎么办

jar包下载失败的标志

 

解决办法:

1.手动删除此jar包文件夹

2.使用工具

修改工具中本地仓库地址

 

手动导入jar包

有部分非开源的项目jar包,在中心仓库中是无法下载的,这时需要我们手动导入jar包

1.先有jar包

2.在cmd中执行手动导入jar的命令

mvn install:install-file -Dfile=jar当前所在路径 -DgroupId=设置jar包的组织名(自定义) -DartifactId=设置jar包的项目名(自定义) -Dversion=设置jar包的版本号(自定义) -Dpackaging=jar(jar包的打包方式,通常都是jar)

目前的依赖

<!--jdbc驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.48</version>
</dependency>
​
<!--mybatis相关依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.4</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
​
<!--servlet+jsp+jstl依赖-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<think>嗯,用户让我介绍一下XML语法和Maven详解。首先,我需要确认用户的需求。他们可能刚开始学习Java或者项目构建工具,所以需要基础的知识。XML和Maven通常在Java项目中一起使用,用户可能是在学习如何配置Maven项目时遇到了XML文件,比如pom.xml。因此,用户需要了解XML的基本结构,以便能够理解和编辑Maven的配置文件。 接下来,我得考虑如何组织信息。用户可能希望分开两部分,先XML再Maven,但也要说明它们之间的联系。XML部分需要涵盖基本语法,比如标签、元素、属性、嵌套规则等,可能还要提到常见的错误和验证。Maven部分则需要解释它的作用、核心概念如POM、生命周期、依赖管理、插件和仓库。同时,要举例说明pom.xml的结构,这样用户能更直观地理解。 另外,用户可能不知道Maven为什么要用XML,所以需要指出XML的结构化特性适合做配置,而Maven利用这一点来管理项目。还要注意用户的潜在需求,比如他们可能想通过例子学习如何配置依赖或插件,或者解决常见的构建问题,所以提供简单的示例会有帮助。 需要避免使用过于专业的术语,保持解释简单明了。例如,在解释Maven生命周期时,用阶段(phase)和目标(goal)的区别,可能需要用类比或步骤来说明。同时,提醒用户常见的注意事项,比如依赖冲突,或者如何添加仓库,这些是实际使用中容易遇到的问题。 最后,总结部分要强调两者的结合,确保用户明白XML在Maven配置中的作用,以及掌握这些知识对项目管理的帮助。可能还需要考虑用户下一步的学习方向,比如推荐学习Maven命令或高级配置,但根据问题范围,暂时不需要扩展,保持回答的针对性。</think>好的!以下是对 **XML 语法**和 **Maven** 的详细介绍,内容分为两部分,便于理解。 --- ### 一、XML 语法详解 **XML(eXtensible Markup Language)** 是一种标记语言,用于存储和传输结构化数据。它的核心特点是可扩展性(标签可自定义)和自描述性。 #### 1. 基本语法规则 - **声明**:XML 文件通常以声明开头,定义版本和编码: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` - **根元素**:必须有且仅有一个根元素,所有其他元素嵌套在根元素内。 ```xml <root> <!-- 其他内容 --> </root> ``` - **标签**: - 标签区分大小写,必须闭合(成对或自闭合)。 - 成对标签:`<tag>内容</tag>` - 自闭合标签:`<tag />` - **属性**:属性值必须用引号包裹: ```xml <person id="001" role="admin">Tom</person> ``` - **注释**:`<!-- 注释内容 -->` - **特殊字符**:需转义,如 `<` → `<`、`>` → `>`。 #### 2. XML 示例 ```xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="IT"> <title>Java Programming</title> <author>John Doe</author> <price>49.99</price> </book> <book category="Fiction"> <title>XML for Beginners</title> <author>Jane Smith</author> <price>29.99</price> </book> </bookstore> ``` #### 3. XML 用途 - 配置文件(如 Maven 的 `pom.xml`、Spring 的配置)。 - 数据交换格式(如 SOAP、RSS)。 - 结构化数据存储。 --- ### 二、Maven 详解 **Maven** 是 Apache 的开源构建工具,主要用于 Java 项目管理。其核心功能包括: - **依赖管理**(自动下载库文件) - **构建生命周期**(编译、测试、打包等) - **项目标准化**(目录结构、配置约定) #### 1. Maven 核心概念 - **POM(Project Object Model)**: - 项目配置的核心文件是 `pom.xml`,定义了项目信息、依赖、插件等。 - 示例 `pom.xml` 结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-project</artifactId> <version>1.0.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project> ``` - **坐标(Coordinates)**: - 通过 `groupId`(组织标识)、`artifactId`(项目标识)、`version` 唯一标识一个依赖。 - **仓库(Repository)**: - **本地仓库**:本地机器上的依赖缓存(默认在 `~/.m2/repository`)。 - **中央仓库**:Maven 官方维护的公共仓库([search.maven.org](https://search.maven.org/))。 - **私有仓库**:公司内部搭建的仓库(如 Nexus、Artifactory)。 - **生命周期(Lifecycle)**: - 默认生命周期包含多个阶段(phase),如: - `compile`(编译) - `test`(运行测试) - `package`(打包为 JAR/WAR) - `install`(安装到本地仓库) - `deploy`(部署到远程仓库) - **插件(Plugins)**: - 通过插件执行任务,例如 `maven-compiler-plugin` 用于编译代码。 #### 2. Maven 常用命令 ```bash mvn clean # 清理 target 目录 mvn compile # 编译代码 mvn test # 运行测试 mvn package # 打包项目 mvn install # 安装到本地仓库 mvn deploy # 部署到远程仓库 ``` #### 3. Maven 目录结构 Maven 使用约定优于配置,标准目录结构如下: ``` my-project/ ├── src/ │ ├── main/ │ │ ├── java/ # Java 源代码 │ │ └── resources/ # 配置文件 │ └── test/ │ ├── java/ # 测试代码 │ └── resources/ └── pom.xml ``` --- ### 三、XML 与 Maven 的关系 - Maven 使用 XML 格式的 `pom.xml` 文件描述项目配置。 - XML 的结构化特性非常适合定义复杂的依赖关系和构建流程。 --- ### 四、注意事项 1. **XML 格式必须严格正确**(如标签闭合、属性引号)。 2. **Maven 依赖冲突**:可通过 `<exclusions>` 排除冲突依赖。 3. **镜像仓库配置**:修改 `settings.xml` 加速依赖下载。 希望以上内容能帮助你理解 XML 和 Maven!如果需要进一步示例或细节,请随时告诉我。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢乐的阿博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值