Ant的使用

来源:http://www.cnblogs.com/fireway/archive/2017/07/16/7192453.html
-Advertisement-
Play Games

Ant的使用 什麼是Apache Ant Apache Ant是一個基於java的軟體構建工具(build tool),理論上它有點類似C/C++的make工具 為什麼要用ant? make, gnumake, nmake, jam或其他已有的構建工具里,為什麼還需要單獨搞這個ant工具呢? 因為前 ...


Ant的使用

什麼是Apache Ant

Apache Ant是一個基於java的軟體構建工具(build tool),理論上它有點類似C/C++的make工具

為什麼要用ant?

make, gnumake, nmake, jam或其他已有的構建工具里,為什麼還需要單獨搞這個ant工具呢? 
因為前面的這些構建工具都有局限性,Ant的原創作者在開發跨多個平臺的軟體時無法忍受。

  • make工具本質上是基於shell: make會評估一些系統依賴,然後才能執行命令。這意味著你可以輕鬆地使用或編寫您正在處理的操作系統的任何程式來擴展這些構建工具。但是,這也意味著你將自己限制在操作系統上,或者至少是Unix類的操作系統類型。
  • makefile工具本身也是很討厭的,任何一個曾經用makefile工作的人都會遇到麻煩的tab問題。“由於我在tab前面加了一個空格導致我的命令行總不湊效”,Ant的原創作者說了太多遍了。像Jam這樣的工具在很大程度上處理了這個問題,但是仍然要使用和記住它的一些格式。

而Ant是不同的,Ant使用Java類擴展,而不是使用基於shell命令擴展。與編寫shell命令不同,配置文件是基於xml的,調用一個目標樹來執行各種任務。每個任務由實現特定任務介面的Java對象運行。 
Ant去掉了一些shell命令(比如find . -name foo -exec rm {})的功能,但它提供了類似的功能,一個跨平臺(work anywhere and everywhere)的能力。如果你真的需要執行這些shell命令,Ant有一個<exec>任務允許根據正在執行的操作系統執行不同的命令。

說白了,Ant工具為瞭解決跨平臺問題。

使用Apache Ant

編寫一個簡單的構建文件

Apache Ant的構建文件是用build.xml編寫的。 
每個構建文件包含一個項目(project)和至少一個預設目標(target)。目標包含任務(task)。

Projects 
一個project包含下麵3個屬性

屬性描述
name 項目名稱
default 在不提供目標時使用的預設目標
basedir 完成所有路徑計算的基本目錄。
這個屬性可能會被預先設置“basedir”屬性覆蓋。
如果該屬性和屬性值都沒有設置,則將使用構建文件build.xml所在的目錄路徑。

可選地,項目的描述可以由頂級的<description>元素提供。
每個項目定義一個或多個目標。目標是您想要執行的一組任務。當啟動Ant時,可以選擇要執行的目標。當沒有目標時,項目的預設值default被使用。

Targets
一個目標可以依賴於另外目標,使用depends屬性。 
例如,您可能有一個用於編譯的目標,和一個發佈的目標。當你執行發佈的目標時不得不先執行編譯的目標,所以發佈目標取決於編譯目標。應該註意的是,Ant的depends屬性, 如果它依賴的目標沒有執行,而是直接執行當前目標,它也會自動去執行依賴的目標。

Tasks 
任務是可以執行的一段代碼。 一個任務可以有多個屬性(或者參數,如果你喜歡的話)。 
屬性的值可能包含對屬性的引用。這些引用將在任務執行之前解析。 
任務有一個共同的結構: 
<name attribute1="value1" attribute2="value2" ... /> 
name就是任務的名稱,attributeN是屬性名,valueN是該屬性的值。 
所有任務共用一個任務名屬性。該屬性的值將用於Ant生成的日誌消息。

Properties

參考


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、前言 前面第一篇闡述了採用基於.NET CORE微服務架構,應用surging服務端與客戶端之間進行通信的簡單示例以及對於surging服務化框架簡單介紹。在這篇文章中,我們將剝析surging的架構思想。 surging源碼下載 2、通信機制 2.1 簡介 在單體應用中,模塊之間的調用通信通過 ...
  • using System; using System.Collections.Generic; using System.Web; namespace Zhong.Core { /// /// Cookie操作類 /// public class CookieHelper { private sta... ...
  • 引用相等性和值相等性 在 C# 中,相等性分為引用相等性和值相等性。引用相等性是指,若兩個引用類型的變數引用的是同一個對象,則它們具有引用相等性。 // x, y, z 都是引用類型變數 object x = new object(); object y = new object(); object ...
  • 頭文件:#include <algorithm>using namespace std;1.預設的sort函數是按升序排。對應於1)sort(a,a+n); //兩個參數分別為待排序數組的首地址和尾地址2.可以自己寫一個cmp函數,按特定意圖進行排序。對應於2)例如:int cmp( const i ...
  • 本文選自 http://www.cnblogs.com/lhws/archive/2012/03/15/2397952.html ...
  • Windows的畫圖板相信很多人都用過,這次我們就來講講Java版本的簡易畫板的實現。 Windows的畫圖板相信很多人都用過,這次我們就來講講Java版本的簡易畫板的實現。 基本的思路是這樣的:畫板實現大致分三部分:一是畫板界面的實現,二是畫板的監聽以及畫圖的實現,三是畫板的重繪。(文章較長,但是 ...
  • 重寫 equals(Object obj) 方法 equals() 方法是 Object 基類中實現的基本方法之一,用於 自定義對象的判等規則 。 1. Object 類中的 equals() 方法 2. 自定義 euqals() 方法 ...
  • 轉眼間我已經大三了,現在成為了實驗室的負責人,對於下一屆學生的納新重任就交到了我的手上,想採取不同的方法暑假儘可能對他們進行一些培訓,所以製作了此教程,說實話,在網上還沒有找到關於ISE的入門級使用教程呢!可謂是全網首創啊!話不多說,我們趕緊看看我的處女視頻教程吧! 互聯網是最好的學習平臺,讓貧富之 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...