构建工具Maven一之初识Maven

Java项目中有三大构建工具:Ant、Maven和Gradle。经过时间的推移,Ant已经消声灭迹,以前做Android 开发对Gradle比较熟悉,以前就对Maven有一定的了解。同是构建工具,
对比起来Gradle相比Maven来说比较灵活,基于Groovy的脚本,让自由度更高。Maven则在大多数情况下不需要进行扩展,

image

pom.xml(Project Object Model)

  • 它是Maven中工作的基本单位,这是一个XML文件。它始终保存在该项目基本目录中的pom.xml文件。
  • 每个项目只有一个POM文件

Dependency(依赖管理)

  • 传统的方式
  • Maven的方式

    • 你需要知道 log4j 的 Maven 坐标,它会自动下载 log4j 的1.2.14 版本库。如果“version”标签被忽略,它会自动升级库时当有新的版本时

      1
      2
      3
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
    • 声明 Maven 的坐标转换成 pom.xml 文件。

      1
      2
      3
      4
      5
      6
      7
      <dependencies>
      <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
      </dependency>
      </dependencies>
    • 当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库

Coordinates(坐标)

  • 标记产品(软件提供商(log,jackson等产品))在仓库(Maven)的坐标位置。

  • 举个栗子,一个项目,他的包结构路径为:com.rocka.panda;一般会将groupId设置为

节点 描述 是否必须
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的,有点类似于包名。这里就是com.rocka 必填
artifactId 这是项目的ID。这通常是项目的名称,所以这里就是panda 必填
version 这是项目的版本。与groupId一起使用 非必须
packaging 项目打包类型,是pom、jar、war的那种类型,默认是jar 非必须

Maven本地库

Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。

  • Mac的本地库地址为:/Users/Rocka/.m2
  • Windows的本地库地址为:C:\Documents and Settings\Rocka.m2

Maven远程库

当你导入一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – http://repo1.maven.org/maven2/ 查找下载。

Maven 依赖搜索序列

当我们执行 Maven 构建命令,Maven 依赖库按以下顺序进行搜索:

  1. 搜索依赖本地资源库,如果没有找到,跳到第2步,否则,如果找到那么会做进一步处理。
  2. 搜索依赖中央存储库,如果没有找到,则从远程资源库/存储库中,然后移动到步骤4,否则如果找到,那么它下载到本地存储库中,以备将来参考使用。
  3. 如果没有提到远程仓库,Maven 则会停止处理并抛出错误(找不到依赖库)。
  4. 远程仓库或储存库中的搜索依赖,如果找到它会下载到本地资源库以供将来参考使用,否则 Maven 停止处理并抛出错误(找不到依赖库)。

Maven 构建项目

当你运行“mvn package”命令,它会编译源代码,运行单元测试和包装这取决于在pom.xml文件的“packaging”标签。

  1. “packaging” = jar, 将您的项目打包成一个“jar”文件,并把它变成你的目标文件夹
  2. “packaging” = war,将您的项目打包成“war”文件,并把它变成目标文件夹。

Maven 清理项目

当“mvn clean”执行,在“target”文件夹中的一切都将被删除。
部署进行生产
要部署您的项目进行生产,它总是建议使用 “mvn clean package“, 以确保始终获得最新的部署。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器