一、Ant
Ant是最早出現的構建工具。
1、作用
- 可以用ant編譯java類,生成class文件
- ant可以自定義標籤、配置文件,用於構建。
- ant可以把相關層構建成jar包 。
- ant把整個項目生成web包,併發布到Tomcat
2、優點
- 跨平臺性:Ant是純Java語言編寫的,因此具有很好的跨平臺性。
- 操作簡單:Ant是由一個內置任務和可選任務組成的。Ant運行時需要一個XML文件(構建文件)。
- Ant通過調用target樹,就可以執行各種task:每個task實現了特定接口對象。由於Ant構建文件時XML格式的文件,所以很容易維護和書寫,而且結構很清晰。
- Ant可以集成到開發環境中:由於Ant的跨平臺性和操作簡單的特點,它很容易集成到一些開發環境中去。
3、build.xml配置
build.xml就是一個XML文件,它包含一個project節點和至少一個target節點,target節點包含多個task元素。簡單說,target節點代表着你的構建目標,而該目標是由多個操作/任務(task)來達成的。
下面詳解各節點及屬性含義:
https://blog.csdn.net/mevicky/article/details/72828554
二、Maven
除了以程序構建能力爲特色之外,還提供高級項目管理工具
1、作用
- 使用Project Object Model來對軟件項目管理;
- 內置了更多的隱式規則,使得構建文件更加簡單;
- 內置依賴管理和Repository來實現依賴的管理和統一存儲;
- 內置了軟件構建的生命週期;
2、優點
- 擁有約定,知道你的代碼在哪裏,放到哪裏去
- 擁有一個生命週期,例如執行 mvn install就可以自動執行編譯,測試,打包等構建過程
- 只需要定義一個pom.xml,然後把源碼放到默認的目錄,Maven幫你處理其他事情
- 擁有依賴管理,倉庫管理
3、pom.xml配置
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本。maven2.0必須是這樣寫,現在是maven2唯一支持的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者組織的唯一標誌,並且配置時生成的路徑也是由此生成, 如com.winner.trade,maven會將該項目打成的jar包放本地路徑:/com/winner/trade -->
<groupId>com.winner.trade</groupId>
<!-- 本項目的唯一ID,一個groupId下面可能多個項目,就是靠artifactId來區分的 -->
<artifactId>trade-core</artifactId>
<!-- 本項目目前所處的版本號 -->
<version>1.0.0-SNAPSHOT</version>
<!-- 打包的機制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默認爲jar -->
<packaging>jar</packaging>
<!-- 幫助定義構件輸出的一些附屬構件,附屬構件與主構件對應,有時候需要加上classifier才能唯一的確定該構件 不能直接定義項目的classifer,因爲附屬構件不是項目直接默認生成的,而是由附加的插件幫助生成的 -->
<classifier>...</classifier>
<!-- 定義本項目的依賴關係 -->
<dependencies>
<!-- 每個dependency都對應這一個jar包 -->
<dependency>
<!--一般情況下,maven是通過groupId、artifactId、version這三個元素值(俗稱座標)來檢索該構件, 然後引入你的工程。如果別人想引用你現在開發的這個項目(前提是已開發完畢併發布到了遠程倉庫),-->
<!--就需要在他的pom文件中新建一個dependency節點,將本項目的groupId、artifactId、version寫入, maven就會把你上傳的jar包下載到他的本地 -->
<groupId>com.winner.trade</groupId>
<artifactId>trade-test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<!-- maven認爲,程序對外部的依賴會隨着程序的所處階段和應用場景而變化,所以maven中的依賴關係有作用域(scope)的限制。 -->
<!--scope包含如下的取值:compile(編譯範圍)、provided(已提供範圍)、runtime(運行時範圍)、test(測試範圍)、system(系統範圍) -->
<scope>test</scope>
<!-- 設置指依賴是否可選,默認爲false,即子項目默認都繼承:爲true,則子項目必需顯示的引入,與dependencyManagement裏定義的依賴類似 -->
<optional>false</optional>
<!-- 屏蔽依賴關係。 比如項目中使用的libA依賴某個庫的1.0版,libB依賴某個庫的2.0版,現在想統一使用2.0版,就應該屏蔽掉對1.0版的依賴 -->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 爲pom定義一些常量,在pom中的其它地方可以直接引用 使用方式 如下 :${file.encoding} -->
<properties>
<file.encoding>UTF-8</file.encoding>
<java.source.version>1.5</java.source.version>
<java.target.version>1.5</java.target.version>
</properties>
...
</project>
https://blog.csdn.net/u012152619/article/details/51485297
4、Maven倉庫配置
Maven缺省的本地倉庫地址爲${user.home}/.m2/repository 。也就是說,一個用戶會對應的擁有一個本地倉庫。
你也可以自定義本地倉庫的位置,修改settings.xml :
<localRepository>E:/repository</localRepository>
https://blog.csdn.net/u013142781/article/details/50316383
5、鏡像配置
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>