Maven和Ant
當一個代碼項目大了以后,每次重新編譯、打包、測試等都會變得非常復雜而且重復,因此c語言中有make腳本來幫助這些工作的批量完成。在Java 中應用是平臺無關性的,當然不會用平臺相關的make腳本來完成這些批處理任務了,ANT本身就是這樣一個流程腳本引擎,用于自動化調用程序完成項目的編譯、打包、測試等。除了基于JAVA是平臺無關的外,腳本的格式是基于XML的,比make腳本來說還要好維護一些。
每個Ant腳本(缺省叫build.xml)中設置了一系列任務(target),比如對于一個一般的項目可能需要有以下任務:
* 任務1:usage 打印本腳本的幫助信息(缺省)
* 任務2:clean <-- init 清空初始化環境
* 任務3:javadoc <-- build <-- init 生成JAVADOC
* 任務4:jar <-- build <-- init 生成JAR
* 任務5:all <-- jar + javadoc <-- build <-- init 完成以上所有任務:jar javadoc
多個任務之間往往又包含了一定的依賴關系:比如把整個應用打包任務(jar)依賴于編譯任務(build),而編譯任務又依賴于整個環境初始化任務(init)等。
注:我看到很多項目的ant腳本中的命名基本上都是一致的,比如:編譯一般叫build或者compile;打包一般叫jar或war;生成文檔一般命名為 javadoc或javadocs;執行全部任務all。在每個任務的中,ANT會根據配置調用一些外部應用并配以相應參數執行。雖然ANT可調用的外部應用種類非常豐富,但其實最常用的就2,3個:比如javac javadoc jar等。
? ? ? ?Ant與一般基于命令的工具有所不同,它是Java類的擴展。Ant運行需要的XML格式的文件不是Shell命令文件。它是由一個Project組成的,而一個Project又可分成可多target,target再細分又分成很多task,每一個task都是通過一個實現特定接口的java類來完成的。
? ? ? ?Ant?沒有一個約定的目錄結構, ?必須明確讓ant做什么,什么時候做,然后編譯、打包 。
? ? ? ? Ant?沒有生命周期,必須定義目標及其實現的任務序列, ?沒有集成依賴管理。??
? ?Ant的優點:
Ant是Apache軟件基金會JAKARTA目錄中的一個子項目,它有以下的優點。
跨平臺性。Ant是純Java語言編寫的,因此具有很好的跨平臺性。
操作簡單。Ant是由一個內置任務和可選任務組成的。Ant運行時需要一個XML文件(構建文件)。
Ant通過調用target樹,就可以執行各種task。每個task實現了特定接口對象。由于Ant構建的文件是XML格式的文件,所以很容易維護和書寫,而且結構很清晰。
Ant可以集成到開發環境中。由于Ant的跨平臺性和操作簡單的特點,它很容易集成到一些開發環境中去。
2. Maven 的概念
? ? ? Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
Maven 有一個生命周期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命周期。遍歷生命周期旅途中的一個影響就是,Maven 運行了許多默認的插件目標,這些目標完成了像編譯和創建一個 JAR 文件這樣的工作。
此外,Maven能夠很方便的幫你管理項目報告,生成站點,管理JAR文件,等等。
Maven 常用命令
mvn archetype:create 創建Maven項目
mvn compile 編譯源代碼
mvn test-compile 編譯測試源代碼
mvn test 運行應用程序中的單元測試
mvn site 生成項目相關信息的網站
mvn clean 清除項目目錄中的生成結果
mvn package 根據項目生成的jar
mvn install 在本地Respository中安裝jar
mvn eclipse:eclipse 生成eclipse項目文件
? ? ? ? ??Maven ?擁有約定,知道你的代碼在哪里,放到哪里去;?
??擁有一個生命周期,例如執行 mvn install 就可以自動執行編譯、測試、打包等構建過程, ??只需要定義一個pom.xml,然后把源碼放到默認的目錄;
Maven幫你處理其他事情 ?擁有依賴管理,倉庫管理
http://baike.baidu.com/view/336103.htm
3. Maven和Ant區別
? ? ? 目前,絕大多數開發人員都把 Ant 當作 Java 編程項目的標準構建工具。遺憾的是,Ant 的項目管理工具(作為 make 的替代工具)不能滿足絕大多數開發人員的需要。通過檢查 Ant 構建文件,很難發現項目的相關性信息和其它元信息(如開發人員/擁有者、版本或站點主頁)。
? ? ? ? Maven 除了以程序構建能力為特色之外,還提供 Ant 所缺少的高級項目管理工具。由于 Maven 的缺省構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目,而使用 Ant 則需要十幾行。事實上,由于 Maven 的面向項目的方法,許多 Apache Jakarta 項目現在使用 Maven,而且公司項目采用 Maven 的比例在持續增長。
Maven 和 Ant 是針對構建問題的兩個不同方面。Ant 為 Java 技術開發項目提供跨平臺構建任務。Maven 本身描述項目的高級方面,它從 Ant 借用了絕大多數構建任務。因此,由于 Maven 和 Ant 代表兩個差異很大的工具,所以我將只說明這兩個工具的等同組件之間的區別。
總結
- 上一篇: 在MyEclipse中导入做好的java
- 下一篇: Linux进程间通讯