Maven
管理項目依賴及構建
Maven
管理項目依賴及構建的工具。Maven
主要做了兩件事:
統一開發規范與工具
統一管理jar包
Maven
項目的目錄結構:
src/main/java : 項目java類文件位置
src/main/resources : 項目配置資源文件位置
src/test/java : 項目單元測試java類文件位置
src/test/resources : 項目單元測試配置資源文件位置
webapp目錄: webapp下存放Web應用相關代碼
target : 項目打包后文件所在位置
其他要點:
pom
(Project Object Model
(項目對象模型)),用于描述整個Maven
項目,也稱為Maven
描述文件。pom.xml
,Maven
的核心配置文件。Maven
項目的基本坐標:groupId
、artifactId
、version
三個元素生成了一個Maven
項目的基本坐標.本地倉庫與遠程倉庫
Maven
工程首先會從本地倉庫中獲取jar
包,當無法獲取指定jar
包時,本地倉庫會從遠程倉庫(中央倉庫)中下載jar
包,并放入本地倉庫以備將來使用。傳遞依賴 與 排除依賴
傳遞依賴:如果我們的項目引用了一個Jar
包,而該Jar
包又引用了其他Jar
包,那么在默認情況下項目編譯時,Maven
會把直接引用和間接引用的Jar
包都下載到本地。
排除依賴:如果我們只想下載直接引用的Jar
包,那么需要在pom.xml
中做如下配置:(將需要排除的Jar
包的坐標寫在中)依賴沖突
短路優先
**聲明優先 ** 若引用路徑長度相同時,在pom.xml
中誰先被聲明,就使用誰。繼承
在聚合多個項目時,如果這些被聚合的項目中需要引入相同的Jar
,那么可以將這些Jar
寫入父pom
中,各個子項目繼承該pom
即可。
父pom
配置:將需要繼承的Jar
包的坐標放入標簽即可。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
</dependencyManagement>
子pom
配置:
<parent>
<groupId>父pom所在項目的groupId</groupId>
<artifactId>父pom所在項目的artifactId</artifactId>
<version>父pom所在項目的版本號</version>
</parent>
- 基本命令
-
-v
:查詢Maven
版本
本命令用于檢查Maven
是否安裝成功。
Maven
安裝完成之后,在命令行輸入mvn -v
,若出現Maven
信息,則說明安裝成功。 -
compile
:編譯
將Java
源文件編譯成class
文件
-test
: 執行test目錄下的測試用例 -
package
:將項目打成jar包 -
clean
:刪除target
文件夾 -
install
:安裝,將當前項目放到Maven的本地倉庫中,供其他項目使用.
pom.xml
基本標簽
-
properties
:定義一些配置屬性,例如project.build.sourceEncoding
(項目構建源碼編碼方式),可以設置為UTF-8
,防止中文亂碼,也可定義相關構建版本號,便于日后統一升級。 -
build
與構建相關的配置,比如build
下有finalName
,表示的就是最終構建之后的名稱。 -
dependencies
dependency
等。
使用 Ant
+Ivy
項目構建和依賴管理
需要的文件
build.xml
定義各個Ant targets
build.properties
定義Ant build
需要的變量、properties
等
ivy-settings.xml
定義property
文件
ivy.xml
定義真正的依賴關系
依賴沖突是,可以配置force=true
強制使用某個版本(推薦方案)。否則的話,就取決于Resolver
的策略,Ivy Resolver
確定classpath
,然后誰先出現使用誰。
簡單比較:
Ant
+Ivy
:用XML
編寫腳本。
- 優點:在于對構建過程的控制上。
- 不足:
Ant
需要開發人員將執行task
所需要的全部命令一一列出。配置文件會比較笨重。
Maven
:用XML
編寫腳本。依靠約定提供現成的可調用的目標goals
。
Gradle
:基于Groovy
,腳本簡單清晰。也有樣板文件,相對來說,約定好,靈活性也高。