1. 程式人生 > 實用技巧 >1128. 等價多米諾骨牌對的數量

1128. 等價多米諾骨牌對的數量

Maven 功能

Maven 能夠幫助開發者完成以下工作:

  • 構建
  • 文件生成
  • 報告
  • 依賴
  • SCMs
  • 釋出
  • 分發
  • 郵件列表

約定配置

Maven 提倡使用一個共同的標準目錄結構,Maven 使用約定優於配置的原則,大家儘可能的遵守這樣的目錄結構。如下所示:

目錄目的
${basedir} 存放pom.xml和所有的子目錄
${basedir}/src/main/java 專案的java原始碼
${basedir}/src/main/resources 專案的資源,比如說property檔案,springmvc.xml
${basedir}/src/test/java 專案的測試類,比如說Junit程式碼
${basedir}/src/test/resources 測試用的資源
${basedir}/src/main/webapp/WEB-INF web應用檔案目錄,web專案的資訊,比如存放web.xml、本地圖片、jsp檢視頁面
${basedir}/target 打包輸出目錄
${basedir}/target/classes 編譯輸出目錄
${basedir}/target/test-classes 測試編譯輸出目錄
Test.java Maven只會自動執行符合該命名規則的測試類
~/.m2/repository Maven預設的本地倉庫目錄位置

Maven 特點

  • 專案設定遵循統一的規則。

  • 任意工程中共享。

  • 依賴管理包括自動更新。

  • 一個龐大且不斷增長的庫。

  • 可擴充套件,能夠輕鬆編寫 Java 或指令碼語言的外掛。

  • 只需很少或不需要額外配置即可即時訪問新功能。

  • 基於模型的構建− Maven能夠將任意數量的專案構建到預定義的輸出型別中,如 JAR,WAR 或基於專案元資料的分發,而不需要在大多數情況下執行任何指令碼。

  • 專案資訊的一致性站點− 使用與構建過程相同的元資料,Maven 能夠生成一個網站或PDF,包括您要新增的任何文件,並新增到關於專案開發狀態的標準報告中。

  • 釋出管理和釋出單獨的輸出− Maven 將不需要額外的配置,就可以與原始碼管理系統(如 Subversion 或 Git)整合,並可以基於某個標籤管理專案的釋出。它也可以將其釋出到分發位置供其他專案使用。Maven 能夠釋出單獨的輸出,如 JAR,包含其他依賴和文件的歸檔,或者作為原始碼釋出。

  • 向後相容性− 您可以很輕鬆的從舊版本 Maven 的多個模組移植到 Maven 3 中。

  • 子專案使用父專案依賴時,正常情況子專案應該繼承父專案依賴,無需使用版本號,

  • 並行構建− 編譯的速度能普遍提高20 - 50 %。

  • 更好的錯誤報告− Maven 改進了錯誤報告,它為您提供了 Maven wiki 頁面的連結,您可以點選連結檢視錯誤的完整描述。

MAVEN需要安裝java並配置maven環境。

Maven POM

POM( Project Object Model,專案物件模型 ) 是 Maven 工程的基本工作單元,是一個XML檔案,包含了專案的基本資訊,用於描述專案如何構建,宣告專案依賴,等等。

執行任務或目標時,Maven 會在當前目錄中查詢 POM。它讀取 POM,獲取所需的配置資訊,然後執行目標。

POM 中可以指定以下配置:

  • 專案依賴
  • 外掛
  • 執行目標
  • 專案構建 profile
  • 專案版本
  • 專案開發者列表
  • 相關郵件列表資訊

在建立 POM 之前,我們首先需要描述專案組 (groupId), 專案的唯一ID。

<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>
    <!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.companyname.project-group,maven會將該專案打成的jar包放本地路徑:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 專案的唯一ID,一個groupId下面可能多個專案,就是靠artifactId來區分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本號 -->
    <version>1.0</version>
</project>

所有 POM 檔案都需要 project 元素和三個必需欄位:groupId,artifactId,version。