vlambda博客
学习文章列表

一篇小短文让你了解Maven


关注世界领先 DevOps 平台 JFrog


简介

一篇小短文让你了解Maven




Apache Maven是一个项目管理及构建工具,主要用于Java项目的构建,Maven还可以用于构建和管理以C#,Ruby,Scala和其他语言编写的项目。


Maven解决了构建软件那几方面问题:


 编译构建

传统的项目没有使用Maven大部分情况是由IDE对编写代码进行自动编译,将JAVA文件编译成CLASS之后,由研发对bin目录下的CLASS进行打包部署。而Maven通过插件进行构建,并自动打包成Jar或者war包。让编译构建的工作可以很好的在持续集成的过程中交给工具去完成。


依赖获取

通过Pom和settings的配置,到中央仓库进行依赖软件包的获取,摒弃原来把依赖包打入源码项目中,减少源项目的大小,让提升开发人员拉取代码效率,并且可以通过中央仓库对依赖进行统一管理,减少存储空间浪费。


模块管理

可以通过继承,分层等方式管理项目的模块,让代码拆分更清晰。






Maven的安装

一篇小短文让你了解Maven
一篇小短文让你了解Maven




Maven运行依赖于Java环境,所以需要安装Java运行环境JDK。

http://maven.apache.org/download.cgi


Windows

右键 “此电脑” 选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置:

新建系统变量 MAVEN_HOME,变量值 例如:E:\Maven\apache-maven-3.6.3

编辑系统变量 Path,添加变量值:

;%MAVEN_HOME%\bin


 Linux & MacOS

sudo vim /etc/profile

export MAVEN_HOME=/usr/local/apache-maven-3.6.3

export PATH=${PATH}:${MAVEN_HOME}/bin

source /etc/profile






settings.xml 文件配置

一篇小短文让你了解Maven
一篇小短文让你了解Maven




本地仓库 LocalRepository

默认值:<localRepository>${user.home}/.m2/repository</localRepository>

不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录


中央仓库 mirrors

Maven 中央仓库是由 Maven 社区提供的仓库。


远程仓库 Repositories

自建的私服或者其他远程仓库等


仓库认证 Server

定义远程仓库的认证信息






pom.xml项目文件配置

一篇小短文让你了解Maven
一篇小短文让你了解Maven




POM(Project Object Model)用于描述项目如何构建,声明项目依赖等等。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。


所有 POM 文件主要配置内容

groupId

组织标识。它在一个组织或者项目中通常是唯一的。例如,JFrog 软件包 com.jfrog


artifactId

制品标识。它通常是工程的名称。例如,JFrog 的Artifactory,artifactory。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。


version

版本号。在 artifact 的仓库中,它用来区分不同的版本,比如1.0或者1.0-SNAPSHOT


classifier

制品包JDK版本,也就是编译器版本


以上四个标签构成了Maven的管理包的坐标体系也就是我们常说的GAVC


distributionManagement

部署上传。定义上传的远程仓库


parent

继承。定义项目间继承关系


dependency

项目依赖。添加依赖通过GAVC


build

构建。项目的目录结构和构建插件管理等






Maven依赖搜索顺序

一篇小短文让你了解Maven
一篇小短文让你了解Maven




当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。


步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。


步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。


步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

一篇小短文让你了解Maven





Maven构建生命周期

一篇小短文让你了解Maven
一篇小短文让你了解Maven




标准生命周期

clean:项目清理的处理

default:项目部署的处理

site:项目站点文档创建的处理


default周期中的几个阶段

一篇小短文让你了解Maven





Maven常用命令

一篇小短文让你了解Maven




mvn clean

#清理命令 清理项目生产的临时文件,一般是模块下的target目录


mvn compile

#编译命令 编译源代码


mvn test

#测试命令 或执行src/test/java/下junit的测试用例


mvn package

#打包命令 项目打包工具,会在模块下的target目录生成jar或war等文件


mvn install

#安装命令 生成Pom供,并将jar和Pom文件安装到本地仓库,其他模块使用 -Dmaven.test.skip=true跳过测试(同时会跳过test compile)


mvn deploy

#发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服







END


下载JFrog Artifactory企业版(免费试用):https://www.jfrogchina.com/artifactory/free-trial/


下载JFrog Artifactory 开源版(代替 Nexus):

http://www.jfrogchina.com/open-source/


下载JFrog JCR 免费版:

https://jfrog.com/container-registry/



长按二维码关注