目 录CONTENT

文章目录

Maven 快速入门

简中仙
2023-05-25 / 0 评论 / 0 点赞 / 57 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2023-10-08,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、Maven 简介

1、Maven 是什么

Maven 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。

  • 版本 - maven 有自己的版本定义和规则。
  • 构建 - maven 支持许多种的应用程序类型,对于每一种支持的应用程序类型都定义好了一组构建规则和工具集。
  • 输出物管理 - maven 可以管理项目构建的产物,并将其加入到用户库中。这个功能可以用于项目组和其他部门之间的交付行为。
  • 依赖关系 - maven 对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染行为
  • 文档和构建结果 - maven 的 site 命令支持各种文档信息的发布,包括构建过程的各种输出,javadoc,产品文档等。
  • 项目关系 - 一个大型的项目通常有几个小项目或者模块组成,用 maven 可以很方便地管理。
  • 移植性管理 - maven 可以针对不同的开发场景,输出不同种类的输出结果。

2、Maven 的生命周期

maven 把项目的构建划分为不同的生命周期(lifecycle)。粗略一点的话,它这个过程(phase)包括:编译、测试、打包、集成测试、验证、部署。maven 中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后 maven 执行的时候,就依照过程的发展依次调用这些 goal 进行各种处理。

这个也是 maven 的一个基本调度机制。一般来说,位置稍后的过程都会依赖于之前的过程。当然,maven 同样提供了配置文件,可以依照用户要求,跳过某些阶段。

3、Maven 的标准工程结构

Maven 的标准工程结构如下:

|-- pom.xml(maven的核心配置文件)
|-- src
|-- main
  |-- java(java源代码目录)
  |-- resources(资源文件目录)
|-- test
    |-- java(单元测试代码目录)
|-- target(输出目录,所有的输出物都存放在这个目录下)
    |-- classes(编译后的class文件存放处)

4、Maven 的"约定优于配置"

所谓的"约定优于配置",在 maven 中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是除非必要,并不需要去修改那些约定内容。maven 默认的文件存放结构如下:

每一个阶段的任务都知道怎么正确完成自己的工作,比如 compile 任务就知道从 src/main/java 下编译所有的 java 文件,并把它的输出 class 文件存放到 target/classes 中。

对 maven 来说,采用"约定优于配置"的策略可以减少修改配置的工作量,也可以降低学习成本,更重要的是,给项目引入了统一的规范。

二、Maven 安装

1、环境准备

Maven 依赖于 Java,所以本地必须安装 JDK。

打开控制台,执行 java -version 确认本地已安装 JDK。

# java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

2、下载解压

进入 官网下载地址,选择合适版本,下载并解压。命令如下:

wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz --no-check-certificate
tar zxf apache-maven-3.8.4-bin.tar.gz -C /usr/src/
cd /usr/src/
mv apache-maven-3.8.4 maven

3、环境变量

添加环境变量 MAVEN_HOME,值为 Maven 的安装路径。

1、配置 Linux 系统环境变量

输入 vi /etc/profile ,添加环境变量如下:

# MAVEN 的根路径
export MAVEN_HOME=/usr/src/maven
export PATH=$PATH:$MAVEN_HOME/bin

执行 source /etc/profile ,立即生效。

4、检测安装成功

检验是否安装成功,执行 mvn -v 命令,如果输出类似下面的 maven 版本信息,说明配置成功。

# mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /usr/src/maven
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /usr/src/jdk1.8.0_321/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.19.12-1.el7.elrepo.x86_64", arch: "amd64", family: "unix"

5、Maven 配置文件

setting.xml 文件是 Maven 的默认配置文件,其默认路径为:<Maven 安装目录>/conf/settings.xml

如果需要修改 Maven 配置,直接修改 setting.xml 并保持即可。

例如:想要修改本地仓库位置可以按如下配置,这样,所有通过 Maven 下载打包的 jar 包都会存储在 D:\maven\repo 路径下。

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository>D:\maven\repo<localRepository/>
  <!-- 略 -->
</settings>

三、构建项目

1、构建参数

参数说明
install完成项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库
cleanclean能够保证上一次构建的输出不会影响到本次构建
deploy完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
-U强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态
-e如果构建出现异常,该参数能让Maven打印完整的stack trace,以方便分析错误原因
-Dmaven.repo.local如果服务器有很多任务,每个任务都会使用本地仓库,下载依赖至本地仓库
-B该参数表示让Maven使用批处理模式构建项目,能够避免一些需要人工参与交互而造成的挂起状态
-pl在指定模块上执行命令

执行以下命令,即可构建项目:

mvn clean package -Dmaven.test.skip=true -B -U

构建成功后,会输出类似下面的信息:

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.953 s
[INFO] Finished at: 2019-11-24T13:05:10+01:00
[INFO] ------------------------------------------------------------------------

这时,在当前路径下会产生一个 target 目录,其中包含了构建的输出物,如:jar 包、class 文件等。

这时,我们可以执行以下命令启动 jar 包:

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

2、Maven 命令

常用 maven 命令清单:

生命周期阶段描述
mvn validate验证项目是否正确,以及所有为了完整构建必要的信息是否可用
mvn generate-sources生成所有需要包含在编译过程中的源代码
mvn process-sources处理源代码,比如过滤一些值
mvn generate-resources生成所有需要包含在打包过程中的资源文件
mvn process-resources复制并处理资源文件至目标目录,准备打包
mvn compile编译项目的源代码
mvn process-classes后处理编译生成的文件,例如对 Java 类进行字节码增强(bytecode enhancement)
mvn generate-test-sources生成所有包含在测试编译过程中的测试源码
mvn process-test-sources处理测试源码,比如过滤一些值
mvn generate-test-resources生成测试需要的资源文件
mvn process-test-resources复制并处理测试资源文件至测试目标目录
mvn test-compile编译测试源码至测试目标目录
mvn test使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
mvn prepare-package在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在 Maven 2.1+中实现)
mvn package将编译好的代码打包成可分发的格式,如 JAR,WAR,或者 EAR
mvn pre-integration-test执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
mvn integration-test如果有必要的话,处理包并发布至集成测试可以运行的环境
mvn post-integration-test执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
mvn verify执行所有检查,验证包是有效的,符合质量规范
mvn install安装包至本地仓库,以备本地的其它项目作为依赖使用
mvn deploy复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)

示例:最常用的 maven 构建命令

mvn clean install -Dmaven.test.skip=true -B -U

清理本地输出物,并构建 maven 项目,最后将输出物归档在本地仓库。

0

评论区