Maven学习

223 阅读3分钟
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 翻译为"专家""内行",是 Apache 下的一个纯 Java 开发的开源项目。
基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

Maven的功能

构建、文档生成、报告、依赖、SCMs、发布、分发、邮件列表

约定配置

Maven使用约定大于配置的原则,使用一个非常统一常见的目录结构。

image.png

POM

POM(Project Object Model,项目对象模型)是 Maven 工程的基本工作单元。是一个XML文件??包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。

执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

Maven构建的生命周期

image.png

Maven构建配置文件

构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。

image.png

mvn test -Ptest

Maven仓库

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。

三种:本地、中央、远程。其中公司开发中,远程可能是最有用的。

Maven插件Plugin

image.png

插件通常提供了一个目标的集合,并且可以使用下面的语法执行:

<code>mvn [plugin-name]:[goal-name]</code>

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

<code>mvn compiler:compile</code>

Maven创建Java项目

mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"

Maven构建项目

mvn clean package
mvn clean compile
java -cp . com.companyname.bank.App

Maven引入外部依赖

引入第三方库文件到项目。

pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。

要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。

Maven项目模板

Maven 使用 archetype(原型) 来创建自定义的项目结构,形成 Maven 项目模板。(与前面Maven创建Java项目可以关联起来)

archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。

Maven快照和自动化构建??

Maven依赖管理

Maven 一个核心的特性就是依赖管理。当处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。

问题之可传递依赖:一种相当常见的情况,比如说 A 依赖于其他库 B。如果,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B。

image.png

image.png

Maven自动化部署??

Maven和IntelliJ

IntelliJ IDEA 已经内建了对 Maven 的支持。

IDEA 和 Maven 有兼容问题要注意。

image.png

Maven命令

image.png

Maven单一架构案例

image.png