Java 项目管理工具 - Maven

相似于 PHP 中的 Composer,NodeJS 中的 npm,Java 用 Maven 来管理依赖关系。html

实际上,Maven 负责管理 Java 项目开发过程当中的几乎全部的东西:java

  • 版本控制:Maven 有本身的版本定义和规则
  • 依赖管理:Maven 的基础功能
  • 构建:支持多种应用程序类型,提早定义了对应的构建规则和工具集
  • 输出管理:项目构建的产物能够用 Maven 管理,能够加到指定的用户库中
  • 文档:经过 site 命令发布各类文档信息,包括构建过程的输出报告,javadoc 文档等
  • 项目关系:微服务模式下,一个项目一般由几个模块组成,用 Maven 能够完美应对

Maven 生命周期

POM 项目对象模型

pom.xml 元素

每一个 Maven 项目的根目录下都有一个 pom.xml 文件,包含各类配置信息。Maven 用这个文件来构建项目。其中的可配置项有:web

project dependencies
plugins
goals
build profiles
project version
developers
mailing listapache

其中,工程组(groupId)、名称(artifactId)和版本(version)属性是工程的惟一标识。npm

根项目配置示例:maven

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kikakika.myproject-group</groupId>
    <artifactId>myproject</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>myproject_common</module>
        <module>myproject_base</module>
    </modules>

</project>

子模块的配置:svg

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>myproject</artifactId>
        <groupId>com.kikakika.myproject-group</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>myproject_common</artifactId>

</project>

继承关系

每一个项目根目录下的 pom.xml 文件能够被子项目或子模块的所继承,从而实现尽量少的配置。微服务

Maven 的构建生命周期

参考:http://wiki.jikexueyuan.com/project/maven/build-life-cycle.html工具

使用 Maven 构建项目时,能够指定多个基本的阶段,每一个阶段中可使用 pre 和 post 在特定阶段以前或以后执行目标:post

资源拷贝-》编译-》单元测试-》打包建立 JAR 包或 WAR 包-》集成测试-》安装部署到本地或远程仓库

Maven 构建工程时,每一个阶段都有如下三个标准的生命周期:

  • clean:清理以前的构建信息
  • default(or build):构建项目
  • site:建立新的报告文档、部署站点

Maven 仓库

参考:http://www.runoob.com/maven/maven-repositories.html

经过 Maven 获取依赖时的顺序关系:

  1. 如今本地仓库查找依赖,若是依赖存在则中止查找
  2. 若是本地仓库不存在指定的依赖,则去官方提供的中央仓库查找,若是找到了则中止,若是没找到且没有配置远程仓库,则报错中止,不然去远程仓库查找
  3. 若是在远程仓库找到依赖,则中止,不然报错
相关文章
相关标签/搜索