Maven實戰讀書筆記(一):Maven概述

1.1 Maven是什麼,能作什麼

Maven是一個跨平臺的項目管理工具,主要服務於Java平臺的項目構建、依賴管理和項目信息管理。java

Maven的用途之一是項目構建,可以自動化構建過程,從清理、編譯、測試到生成報告,再到打包和部署,只須要輸入簡單命令便可(如mvn clean install)。web

Maven不只是構建工具,仍是依賴管理工具和項目信息管理工具,經過提供中央倉庫,自動幫咱們下載構件(artifact)。apache

Remark:Maven依賴於JDK,安裝Maven以前須要先安裝JDKMaven能夠運行在JDK1.4及以上版本。app

1.2 POM文件

Maven項目的核心是pom.xml,POM(Project Object Model)項目對象模型,定義項目基本信息,描述項目如何構建,聲明項目依賴等。webapp

簡單的pom.xml以下:maven

<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.wangdh.maven</groupId>

   <artifactId>maven-demo</artifactId>

   <version>1.0.0-SNAPSHOT</version>

   <packaging>jar</packaging>

</project>

project是全部pom.xml的根目錄;工具

modelVersion指定當前POM模型的版本,對Maven 2Maven 3而言,該值只能是4.0.0。測試

groupId、artifactId、version定義了一個項目的基本座標。ui

packaging能夠爲jar(默認)、pomwar,是基於基本座標進行區分的。插件

1.3 約定大於配置

Maven中,使用了約定大於配置的原則,能夠大量減小配置。默認的約定有:

1) 源碼路徑 src/main/java

2) 編譯輸出目錄 target/classes

3) 打包方式jar

4) 包輸出目錄target

5) 在項目的根目錄放置pom.xml

Maven中,約定的項是可以經過配置項修改的,約定的項也是配置在超級POM中,能夠在當前的POM文件,經過修改對應配置進行覆蓋。

1.4 Archetype生成項目骨架

基於約定大於配置的思想,Maven可使用Archetype快速的生成項目骨架,在Maven 3 中,簡單運行:mvn archetype:generate

Archetype能夠簡單理解成項目模塊。Archetype不是Maven的核心特性,主要是經過maven-archetype-plugin插件來實現的。

經常使用的Archetype有:

maven-archetype-quickstart

maven-archetype-webapp

1.5 最佳實踐

groupId定義項目的組,通常爲公司的反向域名+項目的名稱,如:com.xxx.myApp

artifactId定義了當前項目在組中的惟一id,通常以項目名稱爲前綴,如:myApp-base

一個公司會有不少項目,一個項目會有不少模塊,因此groupId定義到到項目層次,artifactId定義到模塊層次,當只有一個模塊時,artifactId能夠是項目名稱。

1.6 Maven安裝最佳實踐

1) 設置MAVEN_OPTS環境變量

mvn命令實際是執行了Java命令,所以Java命令可用的參數在運行mvn時也可用。Java默認的最大可用內存每每不可以知足Maven運行的需求,通常將MAVEN_OPTS的值設置爲-Xms128m –Xmx512m,而且設置到環境變量,而不建議修改mvn.batmvn,升級的時候會被覆蓋,須要從新配置,麻煩而且容易忘記。

2) 配置用戶範圍的settings.xml

Maven有兩個配置文件${m2_HOME}/conf/settings.xml${user}/.m2/settings.xml前者是全局範圍的,整臺機器上全部用戶都會受該配置影響,然後者是用戶範圍的,只會影響當前用戶。

推薦配置用戶範圍的配置,能夠避免無心識影響其餘用戶,也能夠避免Maven升級時,配置被覆蓋。

3) 不要使用IDE內嵌的Maven

內嵌的Maven版本一般會比較新,但不必定穩定,並且每每與命令行使用的Maven不是同個版本,所以因爲不穩定,可能會出現一些難以理解的問題,其次版本不一致可能致使構建行爲不一致。

相關文章
相關標籤/搜索