Java構建工具Ant+Ivy, Maven, Gradle

Maven管理項目依賴及構建

Maven 管理項目依賴及構建的工具。Maven主要做了兩件事:
統一開發規范與工具
統一管理jar包

Maven項目的目錄結構

    src/main/java : 項目java類文件位置
    src/main/resources : 項目配置資源文件位置
    src/test/java : 項目單元測試java類文件位置
    src/test/resources : 項目單元測試配置資源文件位置
    webapp目錄: webapp下存放Web應用相關代碼
    target : 項目打包后文件所在位置

其他要點

  1. pomProject Object Model(項目對象模型)),用于描述整個Maven項目,也稱為Maven描述文件。pom.xmlMaven的核心配置文件。

  2. Maven項目的基本坐標groupIdartifactIdversion三個元素生成了一個Maven項目的基本坐標.

  3. 本地倉庫與遠程倉庫 Maven工程首先會從本地倉庫中獲取jar包,當無法獲取指定jar包時,本地倉庫會從遠程倉庫(中央倉庫)中下載jar包,并放入本地倉庫以備將來使用。

  4. 傳遞依賴 與 排除依賴
    傳遞依賴:如果我們的項目引用了一個Jar包,而該Jar包又引用了其他Jar包,那么在默認情況下項目編譯時,Maven會把直接引用和間接引用的Jar包都下載到本地。
    排除依賴:如果我們只想下載直接引用的Jar包,那么需要在pom.xml中做如下配置:(將需要排除的Jar包的坐標寫在中)

  5. 依賴沖突
    短路優先
    **聲明優先 ** 若引用路徑長度相同時,在pom.xml中誰先被聲明,就使用誰。

  6. 繼承
    在聚合多個項目時,如果這些被聚合的項目中需要引入相同的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>
  1. 基本命令
  • -v:查詢Maven版本
    本命令用于檢查Maven是否安裝成功。
    Maven安裝完成之后,在命令行輸入mvn -v,若出現Maven信息,則說明安裝成功。
  • compile:編譯
    Java源文件編譯成class文件
    -test: 執行test目錄下的測試用例
  • package:將項目打成jar包
  • clean:刪除target文件夾
  • install:安裝,將當前項目放到Maven的本地倉庫中,供其他項目使用.
  1. 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,腳本簡單清晰。也有樣板文件,相對來說,約定好,靈活性也高。

引用
Maven使用詳解,非常詳細

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容