相似於 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 獲取依賴時的順序關係: