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. 若是在遠程倉庫找到依賴,則中止,不然報錯
相關文章
相關標籤/搜索