相似于 PHP 中的 Composer,NodeJS 中的 npm,Java 用 Maven 来管理依赖关系。html
实际上,Maven 负责管理 Java 项目开发过程当中的几乎全部的东西:java
每一个 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 文件能够被子项目或子模块的所继承,从而实现尽量少的配置。微服务
参考:http://wiki.jikexueyuan.com/project/maven/build-life-cycle.html工具
使用 Maven 构建项目时,能够指定多个基本的阶段,每一个阶段中可使用 pre 和 post 在特定阶段以前或以后执行目标:post
资源拷贝-》编译-》单元测试-》打包建立 JAR 包或 WAR 包-》集成测试-》安装部署到本地或远程仓库
Maven 构建工程时,每一个阶段都有如下三个标准的生命周期:
参考:http://www.runoob.com/maven/maven-repositories.html
经过 Maven 获取依赖时的顺序关系: