Maven学习笔记

一、介绍Apache Maven

1、什么是Maven

Maven是一个项目管理工具,他包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Managerment System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。在使用Maven的时候,用一个明确定义的项目对象模型来描述你的项目,然后Maven可以用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

2、一个“项目”的概念模型

Maven维护了一个项目的模型,不仅仅是需要将一个项目源码编译成字节码,还需要开发软件项目的描述信息,为项目指定一组唯一的坐标。项目定义的模型具有如下特征:

  • 依赖管理 由于项目是根据一个包含组标识符,构建标识符和版本的唯一坐标定义的。项目间可以使用这些坐标来声明依赖;
  • 远程仓库 和项目依赖有关,可以使用定义在项目对象模型(POM)中的坐标来创建Maven构建的仓库;
  • 全局性构建逻辑重用 插件被编写和项目对象模型(POM)一起工作,他们没有被设计成操作一个已知位置的特定文件。一切被抽象到模型中,插件配置和自定义行为都在模型中进行;
  • 工具可移植性/集成 像eclipse,EetBeans,InteliJ这样的工具现在又共同的方法来找到项目的信息。在Maven出现之前,每个IDE都有不同的方法来存储实际上是自定义项目对象模型(POM)的信息。Maven标准化了这种描述,而虽然每个IDE仍然继续维护他的自定义项目文件,但这些文件现在可以很容易的由模型生成;
  • 便于搜索和过滤插件 像Nexus这样的工具允许你使用存储在POM中的信息对仓库中的内容进行索引和搜索。

二 、安装运行Maven

1、下载Maven

安装Maven提前要安装Java环境

官方下载地址

2、在Linux安装Maven

由于个人开发是在Linux平台,所以这里只介绍Linux平台下的安装配置。

找到Maven根目录,在/etc/profle添加如下代码:

export MAVEN_HOME=/opt/apache-maven-3.5.2/
export PATH=${PATH}:${MAVEN_HOME}/bin

在终端中执行:sudo source /etc/profile

测试Maven环境:mvn -version —->会出现如下效果

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /opt/apache-maven-3.5.2
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_131/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "4.14.0-deepin2-amd64", arch: "amd64", family: "unix"

3、Maven目录介绍
.
LICENSE
NOTICE
README.txt
├── bin
├── boot
├── conf
└── lib

  • LINCENSE 包含了Apache Maven的许可证;
  • NOTICE 包含了一些Maven依赖的库所需要的通告及权限;
  • README.txt 包含了一些安装指令;
  • bin/ 目录包含了运行Maven的mvn脚本;
  • boot/ 目录包含了一个负责创建Maven运行所需要的类装载器的jar文件(plexus-classworlds-2.5.2.jar);
  • conf/ 目录包含了一个关于全局的setting.xml文件,该文件用来自定义你机器上的Maven的一些行为。若要自定义Maven,通常做法是覆写~./m2目录下的setting.xml文件,每个用户都有对应的这个目录;
  • lib/ 目录包含了一些Maven核心的jar文件。

4、用户相关配置和仓库

当你使用Maven,需要扩展时候,Maven会创建一些本地的用户相关的文件,还有在你的home目录的本地仓库,在~./m2目录下有:

  • ~./m2/settion.xml 该文件包含了用户的相关认证,仓库和其他信息的配置,用来自定义Maven的行为。
  • ~./m2/repository/ 该目录是你的本地仓库,当你从远程Maven仓库下载依赖的时候,Maven在你本地仓库存储了这个依赖的一个副本。

5、help插件

Maven Help插件有四个目标,前三个目标是–active-profiles,effective-pom和effective-settings 描述一个特定的项目,他们必须在项目的目录下运行,最后一个目标–describe 相对描述比较复杂,展示某个插件或插件目标的相关信息。

  • help:active-profiles 列出当前构件中活动的profile(项目的,用户的,全局的);
  • help:effective-pom 显示当前构建的实际POM,包含活动的profile;
  • help:effetive-settins 打印出项目的实际settings,包含从全局的settings和用户级别的settings继承的配置;
  • help:describe 描述插件的配置。他不需要在项目目录下运行,但是你必须提供你想要描述插件的groupId和artifactId。

5、关于Apache许可证

(1)、它允许你

  • 自由的下载和使用Apache软件,无论是软件的整体还是部分,也无论是出于个人目的,公司内部目的,还是商业目的。

(2)、它禁止你

  • 在没有正当的权限下重新发布任何源于Apache的软件或软件片段;
  • 以任何可能声明或暗示基金会认可你的发布版本的形式下使用Apache软件基金会拥有的标志;
  • 以任何可能声明或暗示你创建了Apache软件的形式下使用Apache软件基金会拥有的标志。

(3)、它要求你

  • 在你重新发布的包含Apache软件的软件里,包含一份该许可证的副本;
  • 对于任何包含Apache软件的分发版本,提供给Apache软件基金会清楚的权限。

(4)、它不要求你

  • 在任何你再次发布的包含Apache的软件版本里,包含了Apache软件本身源代码,或者你做的改动的源码;
  • 提交你对软件的改动至Apache软件基金会。
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐