【Maven】几分钟了解Maven

本文提供一份面向新手的Maven教程,覆盖Maven环境搭建、项目目录结构、生命周期管理等内容,并介绍Maven如何解决依赖管理等问题。

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

本文是一篇写给新手的Maven教程,注重实战,有清晰的指导步骤和说明。文章可能很枯燥、很干,但是绝对具有实际意义。我本身不喜欢在文章中添加一些娱乐的风格(如搞笑的段子、图片),因为这对于学习这门技术来说几乎没有任何帮助,还占用阅读时间。

我只想把这门技术的逻辑理清楚,并表达出来:技术主要是解决了哪些问题?有哪些组成的要点?基本的数据结构是什么?底层的原理是什么?由底层的数据结构和原理决定的性质是什么?怎么实际应用

在我整个Maven系列文章中,读者也许会得到如下逻辑:

  • Maven主要解决的问题是:一体化管理Java项目中的依赖,自动测试打包部署
  • 技术组成要点:Maven环境配置、开发的目录结构、生命周期、pom.xml
  • 底层的原理:未深入了解,等待以后深入学习
  • 特性:pom.xml是Maven的核心
  • 应用:在Eclipse和IDEA中实践

本文主要内容:

  1. Maven做了什么
  2. 搭建Maven开发环境
  3. 工程目录、生命周期

什么是Maven

  1. 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理 。
  2. Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn]。
  3. 构建工具的发展:Make→Ant→Maven→Gradle

传统项目开发的问题

  1. 一个工程很大的话,就不适合继续使用package来划分模块。最好是把这个工程拆分为多个模块,利于分工协作。借助于Maven就可以将一个项目拆分成多个工程。
  2. 项目中需要的Jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下。带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助Maven,可以将jar包仅保存在“仓库”中,有需要使用的工程“引用”这个文件,并不需要重复复制。
  3. 需要管理Jar的版本。例如,你需要的是mysql.5.1.5.jar,给一个mysql.4.0.jar根本没法用。
  4. 管理Jar文件之间的依赖。项目中要使用a.jar,但是a.jar包又需要使用b.jar里面的类。必须首先获取到b.jar才可以,然后才能使用a.jar的这类问题。

Maven做了什么

  1. Maven可以管理jar文件
  2. 自动下载jar和他的文档,源代码
  3. 管理jar直接的依赖, a.jar需要b.jar , Maven会自动下载b.jar
  4. 管理你需要的jar版本
  5. 帮你编译程序,把java编译为class
  6. 帮你测试你的代码是否正确。
  7. 帮你打包文件,形成jar文件,或者war文件
  8. 帮你部署项目

Maven项目构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等。

Maven支持的构建包括有:

  1. 清理:把之前项目编译的东西删除掉,我新的编译代码做准备。
  2. 编译:把程序源代码编译为执行代码,即由.java文件编译为.class文件。这个编译时批量的,Maven可以同时把成千上百的文件编译为class。另外和javac是不一样,因为javac一次编译一个文件。
  3. 测试:Maven可以执行测试程序代码,验证你的功能是否正确。批量的,Maven同时执行多个测试代码,同时测试很多功能。
  4. 报告:生成测试结果的文件,测试通过没有。
  5. 打包:把项目中所有的class文件、配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件, 通常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件扩展名是.war
  6. 安装:把生成的文件jar、war安装到本机仓库。
  7. 部署:把程序安装好可以执行。

理解Maven的工作方式

让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?

在传统方式:

  1. 访问http://logging.apache.org/log4j/
  2. 下载 Log4 j的 jar 库
  3. 复制 jar 到项目类路径
  4. 手动将其包含到项目的依赖
  5. 所有的管理需要一切由自己做
  6. 如果有 Log4j 版本升级,则需要重复上述步骤一次。

在Maven的方式:

1、你需要知道 log4j 的 Maven 坐标,例如:

<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>

2、它会自动下载 log4j 的1.2.14版本库。如果“version”标签被忽略,当有新的版本时它会自动升级为最新。
3、在pom.xml文件中声明 Maven 的坐标。

<dependencies>
    <dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.14</version>
    </dependency>
</dependencies>

4、当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库,所有由 Maven 管理。

步骤原理:

当建立一个Maven的项目,pom.xml文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索log4j 库:

  1. 在 Maven 的本地仓库搜索 log4j
  2. 在 Maven 中央存储库搜索 log4j
  3. 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

搭建Maven环境

下载

从Apache Maven官网上直接下载:http://Maven.apache.org/download.cg

直接解压到一个没有中文、没有空格的文件夹里,解压后的目录如下:

解压完毕后,就直接可以使用了。这个文件夹的位置就相当于Maven的安装位置。(注意:所有的Apache开源组织开发的软件都是绿色的!)

目录解析:

  1. bin:放置可执行文件的工具(mvn.cmd)
  2. config:配置文件的存放位置(settings.xml)
  3. lib:由于Maven是使用Java开发的,所以需要一些辅助的Jar包

配置环境变量

Maven版本配置要求:

  1. Maven 3.0/3.1 需要 JDK 1.5 或以上
  2. Maven 3.2 要求 JDK 1.6 或以上版本
  3. Maven 3.3.9这个版本所需的JDK版本必须要1.7以上

配置Maven_Home:

将Maven_Home添加到Path中:

注意格式:%Maven_Home%\bin

验证成功否:mvn -v

配置本地仓库

其中,settings.xml是Maven软件的核心文件,用于配置仓库的类型:

配置本地仓库的路径:

配置localRepository的功能:

  1. 这样一来,以后需要的类,都会先去这里寻找。自动下载的类,也会存储到这里。
  2. 如果不配置localRepository标签,则Maven会把数据自动下载到“C:\users\用户名\.m2\repository”中

Maven仓库

  1. 本地仓库:就是你的个人计算机上的文件夹,存放各种jar
  2. 远程仓库:在互联网上的仓库
    1. 中央仓库:最权威的,所有的开发人员都共享使用的一个集中的仓库(https://repo.Maven.apache.org :中央仓库的地址)
    2. 中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都有镜像。
    3. 私服,在公司内部,在局域网中使用的,不是对外使用的。

注意,程序员不能直接选择仓库,这是Maven自动管理的,使用顺序是:本地仓库 --> 私服 --> 中央仓库、镜像仓库

Maven原理

Maven工程约定的目录结构

项目名(例如HelloMaven):

  1. src
    1. main:放置主程序Java代码和配置文件
      1. java:包和Java源代码文件
      2. resources:配置文件
    2. test:放置测试程序Java代码和配置文件(如果没有测试可以没有这个目录)
      1. java:测试用的包和Java源文件
      2. resources:测试用的配置文件
  2. target:结果目录,保存编译后的.class文件
  3. pom.xml

Maven生命周期

什么是Maven的生命中周期:

  1. 就是Maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
  2. Maven的命令:Maven独立使用,通过命令,完成Maven的生命周期的执行
  3. Maven的插件:Maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。

使用Junit:它的主要功能是测试类中每一个方法(方法都是独立测试的

  1. 在pom.xml加入单元测试依赖
  2. 在Maven项目中的src/test/java目录下,创建测试程序。测试类的名称是:Test + 你要测试的类名。测试的方法名称是:Test + 方法名称(要求是public、返回值为void)

主要命令:

  1. mvn clean:清理。会删除原来编译和测试的目录,即target目录,但仓库里的包不会删除。
  2. mvn compile:编译主程序。只会编译main/java目录下的文件,编译后的文件存放于当前目录下新建的target目录。同时把class拷贝到 target/classes目录下面,把main/resources目录下的所有文件 都拷贝到target/classes目录下
  3. mvn test-compile:编译测试程序。只会编译test/java目录下的文件,编译结果会存储于当前目录下生成一个target
  4. mvn test:执行测试。会生成一个目录surefire-reports,保存测试结果
  5. mvn package:打包主程序。会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包,存放于target目录。注意,只会把src/main下的文件打入包。
  6. mvn install:安装主程序。会把本工程打包,并且按照本工程的坐标保存到本地仓库中。
  7. mvn deploy:部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中)。
  8. 注意:执行以上命令必须在命令行进入pom.xml所在目录!

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值