螞蟻
基本特徵
。
螞蟻是地球上最常見的昆蟲,數量最多的昆蟲種類。由於各種螞蟻都是社會性生活的群體,在古代通稱“蟻”。據現代形態科學分類,蟻可分兩大種群:螞蟻類和白蟻類。
螞蟻的種類繁多,世界上已知有9000多種,我國國內已確定的螞蟻種類有600多種。螞蟻的壽命很長,工蟻可生存幾星期或者3-7年,蟻后則可存活十幾年或幾十年。一蟻巢在1個地方可生長年,甚至50多年。
蟻的外部形態分頭、胸、腹三部分,有六條腿。蟻卵約0.5毫米長,呈不規則的橢圓形,乳白色,工蟻體細小,體長約2.8毫米,全身棕黃,單個蟻要細看才易發現。雄、雌蟻體都比較粗大。腹部肥胖,頭、胸棕黃色,腹部前半部棕黃色,後半部棕褐色。雄蟻體長約5.5毫米。雌蟻體長約6.2毫米。
螞蟻為典型的社會昆蟲,具有社會昆蟲的3大要素,即同種個體間能相互合作照顧幼體;具明確的勞動分工;在蟻群內至少有兩個世代重疊,且子代能在一段時間內照顧上一代。
另外要指出的,“白蟻”不是螞蟻,白蟻除一樣具有社會外,在生理結構上和螞蟻有很大的差別。
生物的行為是指生物體進行的在外部可以察覺得到的有適應意義的活動。行為學就是研究這些活動的學科。形態和行為首先被人們注意,但是直到19世紀人們才獲得生物行為研究的理論武器和實驗手段。進化論學說將動物的行為提高到了適應性層次。
目前對生物行為的歸類非常混亂。從遺傳和發育的角度一般將其分為先天行為和後天行為,也就是本能行為和學習行為。但這種分類方法並不常用,人們一般按照行為的功能對其劃分,遺憾的是這種劃分方式並不嚴格,存在大量的重疊區域。
型與分工
發育為完全變態。所有的蟻科都過社會性群體生活。一般在一個群體裡有四種不同的蟻型。
l、蟻后:有生殖能力的雌性,或稱母蟻,在群體中體型最大,特別是腹部大,生殖器官發達,觸角短,胸足小,有翅、脫翅或無翅。主要職責是產卵、繁殖後代和統管這個群體大家庭。
2.雄蟻:或稱父蟻。頭圓小,上顎不發達,觸角細長。有發達的生殖器官和外生殖器,主要職能是與蟻后交配。
3.工蟻:又稱職蟻。無翅,一般為群體中最小的個體,但數量最多。複眼小,單眼極微小或無。上顎、觸角和三對胸足都很發達,善於步行奔走。工蟻是沒有生殖能力的雌性。工蟻的主要職責是建造和擴大巢穴、採集食物、伺餵幼蟻及蟻后等。
4.兵蟻:頭大,上顎發達,可以粉碎堅硬食物,在保衛群體時即成為戰鬥的武器。
螞蟻建立群體,也是以通過婚飛方式兩性相識結交為起點。相識後一見鍾情,在飛行中或飛行後交尾。“新郎”壽命不長,交尾後不久死亡留下“遺孀”蟻后獨自過著孤單生活。蟻后脫掉翅膀,在地下選擇適宜的土質和場所築巢。她“孤家寡人”,力量有限,只能暫時造一小室,作為安身之地,並使已“受孕”的身體有個產房。待體內的卵發育成熟產出後,小幼蟲孵化出世,蟻后就忙碌起來。每個幼蟻的食物都由她嘴對嘴地餵給,直到這些幼蟻長大發育為成蟻,並可獨立生活時為止。當第一批工蟻長成時,它們便挖開通往外界的洞口去尋找食物,隨後又擴大巢穴建築面積,為越來越多的家族成員提供住房。自此以後,飽受艱苦的蟻后就坐享清福,成為這個群體大家族的統帥。撫育幼蟻和餵養蟻后的工作均由工蟻承擔。但蟻后還要繼續交配,不斷產生受精卵,以繁殖大家族。她的壽命可長達15年。蟻巢有各種形式,大多數種類在地下土中築巢,挖有隧道、小室和住所,並將掘出的物質及葉片堆積在入口附近,形成小丘狀,起保護作用。也有的蟻用植物葉片、莖稈、葉柄等築成紙樣巢掛在樹上或岩石間。還有的蟻生活在林區朽木中。更為特殊的是,有的蟻將自己的巢築在別的種類蟻巢之中或旁邊;而兩“家”並不發生糾紛,能夠做到和睦相處。這種蟻巢叫做混合性蟻巢,實為異種共棲。無論不同的蟻類或同種的蟻,其一個巢內蟻的數目均可有很大的差別。最小的群體只有幾十隻或近百隻蟻,也有的幾千隻蟻,而大的群體可以有幾萬隻,甚至更多的蟻。
在我國華南一帶的闊葉林中,還有一種翹尾蟻,顧名思義,就是它那帶有螯針的尾端常翹起來,像是躍躍欲試,隨時準備進攻的樣子。它有種怪脾氣,經常與樹打交道。它喜歡用叼來的腐質物以及從樹上啃下來的老樹皮,再攙雜上從嘴裡吐出來的粘性汁液,在樹上築成足球大的巢,巢內分成許多層次,分別住著雄蟻、蟻后和工蟻,並在巢中生兒育女,成為一個"獨立王國"。開始時一樹一巢,當群體過大,而且又有新的蟻后出生時,新蟻后便帶領部分工蟻另造新居。有時為爭奪領域,常展開一場惡鬥。為了在樹上捕捉其他小蟲為食,它可用細長而有力的足在樹冠的枝葉上奔跑。如兩樹相距較近,為免去長途奔波之勞,它們能巧妙地互相咬住後足,垂吊下來,借風飄蕩,搖到另一棵樹上去,搭成一條"蟻索橋"。為了能較長久地連線兩樹之間的通途,承擔搭橋任務的工蟻還能不斷替換。樹上的食物捕盡,又結隊順樹而下,長途奔襲,捕捉地面上的小動物。獵物一旦被擒獲,翅尾蟻便會用螯針注入麻醉液,使獵物處於昏迷狀態,然後拉的拉,拽的拽,即使是一隻超過它們體重百倍的螳螂或蚯蚓,也能被它們輕而易舉地拖回巢中。
人們從有這種蟻巢的樹下經過,可要十分小心。如驚動了它們,會傾巢出動,順樹而下或從空而降,進行攻擊,使你遭受挨蜇之苦。大家可要小心螞蟻!!
蟻類的食性在不同亞科和不同種類之間有很大的差別。一般可分為肉食性、植食性和雜食性。螞蟻在一年中的大部分時間裡都在辛勤地勞動。那么到了嚴寒的冬天它們又到哪裡去覓食呢?它們是如何過冬的呢?原來聰明的螞蟻在入冬之前早有準備。它們首先搬運雜草種子,準備明年播種用;同時搬運蚜蟲、介殼蟲、角蟬和灰蝶幼蟲等到自己巢內過冬,從這些昆蟲身上吸取排泄物做為食料(奶蜜)。螞蟻為什麼知道冬天快來了呢?從現代科學的觀點看,螞蟻的這種本能是受它們體內的年生物鐘控制而起作用的,換句話說,它們是按照年生物鐘的運行規律做好越冬期食物儲備的。
與螞蟻互動形成的生物達到了驚人的程度。與螞蟻共生(symbiosis)的生物,或專性或間性,植物超過了52科465種(Jolivet 1996),動物則達到了數千種(Kistner 1982; Hölldobler & Wilson 1990),還有大量未知的真菌和微生物(Schultz & McGlynn 2000; Mueller et al. 2001)。
螞蟻正在使用著非凡的生存策略——種植真菌,收穫種子,放牧產蜜昆蟲,編制巢穴,合作捕食,社會性寄生,蓄奴——這些都極大地刺激著科學家和公眾的好奇心。
螞蟻在世界各個角落都能存活,其秘訣就在於它們生活在一個非常有組織的群體中。它們一起工作,一起建築巢穴,使它們的卵與後代能在其中安全成長。
螞蟻有不同的類型,每一類都有其專門的職責。蟻后產卵,大部分卵將發育成雌性,它們被稱為工蟻。它們負責建築並保衛巢穴,照顧蟻后、卵和幼蟲,以及搜尋食物。到了一定的時候,雄蟻與新的蟻后會產生出來。它們有翅膀,從巢穴里集群飛出。交配以後,雄蟻即死去,新的蟻后則開始領導起又一個群體的生活。
在群體中,蟻后是最重要的成員。它是唯一能產卵的。這意味著它是這一群體中所有螞蟻的母親。工蟻餵養它,替它清潔身體,並將它的卵帶到另一處去照料。
某些澳大利亞螞蟻將它們的工蟻作為一種活的儲藏罐。當工蟻採集了大量的花蜜,即一種源自花中的甜甜的液體,將它吞進體內、身體變得膨大起來之後,它們就將自身掛在巢穴的天花板上,一直到有別的螞蟻需要食用它們體內儲藏的那些花蜜為止。
兵蟻正在林地上覓食。為搜尋食物,它們有時會在林地上排成長隊。它們總是很飢餓,因此幾乎會向任何東西發起進攻,有時甚至是大的哺乳動物。
不同的螞蟻吃不同的食物。收穫蟻吃種子,它們將種子收藏在地窖里;而割葉蟻吃蘑菇,它們將葉片搬運到地下,用來培植蘑菇。有些螞蟻則貯存一種叫蚜蟲的昆蟲,它們從蚜蟲體內抽取一種含糖的物質作為食物,這同人類從母牛身上擠奶的方式非常相似。
根據科學家的研究證明,螞蟻在洞穴里缺少糖份,對自己的生長發育很不好,為了能夠找到充分的糖份,所以螞蟻一旦發現甜的東西,觸角就會自主的硬起來,這是螞蟻的一個天性。
螞蟻是社會性很強的昆蟲,彼此通過身體發出的信息素來進行交流溝通,當螞蟻找到食物時,會在食物上撒布那樣的信息素,別的螞蟻就會本能地把有信息素的東西拖回洞裡去。
當螞蟻死掉後,它身上的信息素依然存在,當有別的螞蟻路過時,會被信息素吸引,但是死螞蟻不會像活的螞蟻那樣跟對方交流信息(互相觸碰觸角),於是它帶有信息素的屍體就會被困惑的同伴當成食物運回去。
通常情況下,那樣的屍體不會被當成食物吃掉,因為除了信息素以外,每一窩的螞蟻都有自己特定的識彆氣味,有相同氣味的東西不會受到攻擊,這就是同窩的螞蟻可以很好協作的基礎。
螞蟻的行為
行為生態學(behavioral ecology)是行為學與生態學的交叉領域,是研究動物行為的原因、發生或發展、適應功能、進化歷史的一門科學。行為生態學是生態學科中最年輕的分支學科之一,這一學科在60-70 年代突飛猛進地向前發展。隨著生理學和心理學的發展,到20世紀下半葉,在遺傳學的帶動下生物行為的遺傳研究蓬勃開展起來。現代的行為生態學融入了遺傳學、生物進化論等等多學科,現代分子生物學也被套用到行為生態學的研究中來。
螞蟻是現代動物體系的優勢類群,擁有極為龐大的數量和極為複雜的社會結構。螞蟻與其它各種生物有千絲萬縷的聯繫,據統計,在蟻巢內生活的各種節肢動物就多達3000種。種類多樣的螞蟻和相關物種的多樣性,以及螞蟻社會分工的多樣性,造就了螞蟻在行為上的多樣性。
螞蟻的行為是如此的斑斕和誘人,同時也是一個大迷宮,如同Wilson,E. O.所指,有時它會讓博物學家們走上歧路。
螞蟻搬家
在一些介紹自然常識的書上,螞蟻搬家,燕子低飛,蛇過道等現象,都被認為是即將下雨的先兆。事實果真如此嗎?
如果說螞蟻能夠憑藉本能準確地感覺出即將下雨,甚至能準確地感覺出下雨量的大小,都是完全有可能的,但螞蟻是一種低智慧生物,其視力範圍很短,主要依靠嗅覺感知周圍的事物,測量自己的家與周圍較大區域地勢的相對高低,是一項較複雜的工作,必須依靠很好的視覺,鼠目寸光,螞蟻的目光比老鼠還短,因此,螞蟻不大可能會有測量自己的家與周圍較大區域地勢相對高低的本能。至於根據預測未來幾天的雨量來判斷自己的家是否會被雨水淹沒,其判斷難度更大,就連人類目前也很難準確做到這點,難道螞蟻比人還厲害,可以準確的計算自己的家是否會被雨水淹沒?是否需要通過搬家迴避雨水淹沒?
螞蟻窩幾乎無處不在,在我家的附近就有很多,我發現,每當連續下大雨的時候,茫茫大地一片汪洋,一連好幾天積存著很深(相對於螞蟻來講)的雨水,放眼望去,那些螞蟻的家也不乏有被水完全淹沒的,那么,在那深深的水下被一連浸泡了好幾天的那一窩窩螞蟻,是否都遭到了滅頂之災呢?根本沒有,只要雨過天晴,積水一退,那些螞蟻窩的洞口又迅速地出現了一隻只繁忙的螞蟻,只見它們忙裡忙外,絲毫沒有死傷慘重的跡象。這表明螞蟻的窩根本不怕雨水短時間的浸泡,當雨水的浸泡使得螞蟻窩上部沒有空氣時,窩內的螞蟻可採用堵住通道,向窩內下面較深處轉移的方法避免雨水浸泡的傷害,土壤的疏水作用,以及螞蟻窩內部較深處的結構特徵,使得螞蟻根本沒有必要一感覺到要下雨就開始考慮是否搬家。
為了驗證被水完全淹沒的螞蟻窩內的螞蟻是否會被水全部淹死,還可以通過水淹實驗加以驗證,試驗表明:受到水淹4個小時,沒有看出對窩內螞蟻的生命產生影響。既然被水淹的螞蟻窩內的螞蟻不會被水淹死,則在生物進化的過程中,螞蟻就沒有必要進化出在即將下雨前選擇搬家的本能。生物進化的選擇往往是最科學的選擇,為了防止螞蟻窩被水淹,更科學的選擇應該是在開始建螞蟻窩時就將其建在可防水淹的地方,而不是一次次地採取“勞民傷財”的搬家行動。難道螞蟻在建窩時沒有服從生物進化的選擇?
由此看來,螞蟻搬家不一定是螞蟻擔心自己的家是否會被水淹沒採取的行動,完全有可能是另有原因。比如,由於蟻群數量增加造成在螞蟻窩附近的食物短缺,需要尋找新的食物來源,由於在螞蟻窩附近出現別的蟻群造成一種威脅,需要迴避危險,或者是每群螞蟻本身就有一種建立多個蟻窩的習慣等等。至於螞蟻選擇在陰天或夜晚搬家,主要是為了防止太陽的暴曬對蟻卵可能造成的傷害,由於在夜晚人們不注意螞蟻的行動,但常常能夠在陰天看見螞蟻搬家,於是,就將螞蟻搬家與下雨聯繫了起來。
有時人們會把“螞蟻”用來比喻草根、團結,比如“螞蟻精神”、“螞蟻社區”等等。
螞蟻認路
螞蟻認路是靠算術。
科學家一直沒弄清楚螞蟻是如何判斷距離遠近的德國的科學家為此做了個實驗。他們在距螞蟻洞穴10米遠的地方放置了食物,然後將這些螞蟻抓起來,並分成3組,其中一組螞蟻的腿鋸的短了1毫米,另一組螞蟻的腿被接上支柱加長了1毫米,第三組螞蟻的腿則沒有改變。
結果顯示,那些被人為改變了腿的長度的螞蟻錯估了家的位置。長腿螞蟻在多走了5米後(即多走了15米)才開始尋找自己的家;而短腿螞蟻則相反,它們只走了5米後就開始找家。這一發現顯示這些螞蟻是依靠步數的計算來估計距離的。
螞蟻常會出來找尋食物,有時運氣好,馬上就找到了;有時運氣差,走了好久還沒找著,等要回去時,大半天的路,他們還認得出來嗎?
頑皮的小朋友,常會把螞蟻剛爬過的路,用手把它抹去一段,然後發現螞蟻要找原路時,遇到被抹去的那段,就變得沒方向感了。確實螞蟻有時會在爬過的地方留下氣味,但也有螞蟻不留氣味,而記住沿途的天然氣味,然後找到回家的路。
另外,螞蟻的視覺還非常靈敏,能利用陸上、天空的景致來認路。曾有人用圓筒狀工具,遮住一群正要回巢的螞蟻,讓他們只能看到天空,結果他們仍能按照正確路線前進。後來,人們又用一塊大板子,水平擋在螞蟻的上方,並且儘量放低,讓他們不能看到天空及周圍的景物,於是發現,他們開始失去方向,並且胡亂爬行了。
由此可知,不僅周圍景致、太陽的位置,和藍天上反射下來的日光,都可幫助螞蟻辨認方向。
排隊行動
大家有沒有注意到,螞蟻的行動總是團結一致,像是個個都帶了行動電話時時保持聯絡似的,他們到底有什麼法寶呢?
螞蟻的確有自己的一套辦法聯絡同伴。雖然他們四散到各處覓食,只要有誰發現了食物,除了趕緊銜一小塊回巢去之外,沿途還會記得分泌出芳香訊號,緊急通知同伴前來支援。附近聞到香味的螞蟻會一路嗅著這條芳香路線找到食物,一隻一小塊通力合作,將所有食物搬回窩巢。這些沿著香味移動的螞蟻就形成了一排長長的隊伍,有秩序的前行。
螞蟻分泌的這種芳香物質稱為信息素,由於它的揮發性大,幾分鐘過後,食物都運回了窩巢,香味也就消失不見了,免得再有螞蟻前來,結果撲了空。
螞蟻喜歡蚜蟲嗎
三月天裡,常有大批蚜蟲危害農作物。同時還會發現很多螞蟻在身邊,別以為它們是來吃蚜蟲的,其實,它們是在幫助蚜蟲,間接危害作物呢!
觀察這些螞蟻,不時會用觸角輕輕拍打蚜蟲屁股,似乎和它相處的非常好。而被拍打的蚜蟲,居然很乖地翹起屁股,排泄出一種又甜又香的“蜜露”,來讓螞蟻飽餐。
這種蜜露是由蚜蟲吸食作物的汁液後,一部份供給自身用,一部分就從肛門裡排出,因為其中含有大量糖分,所以螞蟻非常愛吃。
螞蟻因蜜露而愛上蚜蟲,所以當蚜蟲遇到危險,螞蟻就會挺身而出。另外,當蚜蟲棲息的地方缺糧,螞蟻還會將他搬到食物充裕的地方去。
到了冬天,蚜蟲的卵可能會被凍死,螞蟻就會幫忙把卵藏在自己家中。有時,螞蟻怕卵受潮,遇到晴天,他還會把卵搬出來曬太陽。直到隔年春天,小蚜蟲出來了,螞蟻又開始把他們搬到好吃的植物上去。
螞蟻打仗
夏天,在樹林邊,常常會看到許多大大小小的螞蟻,爬來爬去,搬運著昆蟲殘體、泥土…有時它們相遇以後,成群地咬殺起來,鬥爭得十分劇烈。
為什麼螞蟻會打仗呢?有的昆蟲學家對螞蟻打仗,認為是爭奪食物引起的,因而用種內鬥爭理論來解釋。但較多的昆蟲學家,認為不是什麼種內鬥爭,而是一種化學強制反應。
為了證明這個現象,他們做了以下實驗:把不同窩的螞蟻放在一起,它們的觸角一碰,就立刻咬殺起來;相反,把同窩螞蟻放在一起,它們相遇以後,不但不打不咬,還能互相餵食。
昆蟲學家對以上事實這樣解釋:不同窩的螞蟻,身上都有一種特殊的“窩味”。這種“窩味”又與窩的建築材料、儲藏的食物和本身分泌物的不同而不同。每一隻螞蟻都有辨別“窩味”的本領。一旦發現另外的螞蟻不是自己家裡的成員,就咬殺鬥爭起來,慢慢地形成“大戰”。有趣的是,把正在咬殺鬥爭的螞蟻,用水洗掉身上的“窩味”,再把它們放在一起,它們相遇後,就安然無事地各自走開。如果在一隻螞蟻身上灑些香料,它就不能回窩,同窩的螞蟻將誤認它是敵害而被驅趕出來。
也有人認為,螞蟻成群打仗咬殺,與群體大小有直接關係。特別是不同群蟻相遇一起,立刻會引起戰鬥。單只的螞蟻相遇,咬殺鬥爭機會就少了。
螞蟻救火
螞蟻救火
法國昆蟲學家法布爾曾做過一次有趣的試驗。他把一支點燃的蠟燭放在巢的頂部,螞蟻約在一分鐘後覺察到“火警”。開始時,它們來回奔忙顯得驚慌失措,接著,仿佛商量好了似的,無數的螞蟻勇敢的爬上燃燒的燭芯,分泌出蟻酸進行滅火。一些螞蟻“犧牲”後,無數的螞蟻又衝上去,約 60秒鐘後,蠟燭的火被撲滅。幾天以後,法布爾再重複了一次同樣的試驗,這一次,螞蟻僅用了40秒便將蠟燭火撲滅,且沒有一隻螞蟻遇難。
螞蟻嗜酒
有一種經常出入螞蟻國的小蟲,一碰到工蟻就用觸角去碰一下,那些工蟻便心甘情願地將辛苦得來的食物,從嗉囊里吐出來給它吃。這種小蟲身長只有 5-6毫米,它的肚子兩側有一種黃色的刺毛,螞蟻只要撥一下刺毛,就會滲出一種有揮發性的芳香液體,其化學物質和醇很相近,螞蟻非常愛喝,因此便心甘情願地餵養這種小蟲和它們的幼蟲以獲得愛喝的“酒”。
藥用作用
螞蟻被譽為“微型動物營養寶庫”和“天然藥物加工廠”,螞蟻粉中粗蛋白含量高達51.23%,高於雞、魚、牛肉。螞蟻也是著名的藥用昆蟲,螞蟻及其製劑有多方面的藥理作用。具有雙向免疫調節作用,對免疫功能過強,有抑制作用;對免疫功能不足,有促進作用。能緩解急、慢性實驗性炎症。有明顯的鎮痛和催眠作用。特別是補腎壯陽效果顯著,有雄激素樣作用,可促進性器官發育。還能增強胰島內β細胞的功能,降低血糖。螞蟻體內合成大量ATP,能抗疲勞,增強體力。具有顯著清除自由基的效果,能延緩衰老,延長機體壽命。
螞蟻被譽為“微型動物營養寶庫”和“天然藥物加工廠”,螞蟻粉中粗蛋白含量高達51.23%,高於雞、魚、牛肉,含有20多種游離胺基酸,其中包含除色氨酸外的7種必需胺基酸,至於色氨酸,由於在酸水解環境下色氨酸全部被破壞,因此不能肯定不含有色氨酸。
在人體必須微量元素中,以錳、錫、鐵、碘、銅、鋅最為重要,而這些元素在螞蟻中含量非常豐富,尤以鋅為最多,達到110mg/Kg,遠高於其它動物。
螞蟻體內還含有多種維生素、三萜類化合物,如香茅萜、檸檬萜等。
螞蟻也是著名的藥用昆蟲,螞蟻及其製劑有多方面的藥理作用。具有雙向免疫調節作用,對免疫功能過強,有抑制作用;對免疫功能不足,有促進作用。能緩解急、慢性實驗性炎症。有明顯的鎮痛和催眠作用。特別是補腎壯陽效果顯著,有雄激素樣作用,可促進性器官發育。還能增強胰島內β細胞的功能,降低血糖。螞蟻體內合成大量ATP,能抗疲勞,增強體力。具有顯著清除自由基的效果,能延緩衰老,延長機體壽命。螞蟻是保健食品的優良原料,將其用於臨床治療具有較大開發前景。
但並螞蟻成分因種類不同而有所差異,並非所有的螞蟻都適合食用或藥用。目前中國的食藥用螞蟻主要有3屬:多刺蟻屬(Polyrhachis)、蟻屬(Formica)和弓背蟻屬(Camponotus)。據報導,目前已知12種安全的食用或藥用螞蟻:鼎突多刺蟻(擬黑多刺蟻)、雙突多刺蟻(雙齒多刺蟻)、赤胸多刺蟻、血紅林蟻、紅褐林蟻、日本弓背蟻、北方蟻、路舍蟻、日本褐林蟻、北京凹頭蟻、烏拉爾蟻、石狩紅蟻。其中路舍蟻(鋪道蟻)是否安全筆者認為有待進一步確認,也可能是鑑定錯誤,路舍蟻屬切葉蟻亞科鋪道蟻屬,其副作用可能較大。而雙齒多刺蟻和鼎突多刺蟻被很多學者認為是同名物種。
打包工具
Ant工具
Ant是一種基於Java的build工具。理論上來說,它有些類似於(Unix)C中的make ,但沒有make的缺陷。目前的最新版本為:Ant 1.9.4 。
既然我們已經有了make, gnumake, nmake, jam以及其他的build工具為什麼還要要一種新的build工具呢?因為Ant的原作者在多種(硬體)平台上開發軟體時,無法忍受這些工具的限制和不便。類似於make的工具本質上是基於shell(語言)的:他們計算依賴關係,然後執行命令(這些命令與你在命令行敲的命令沒太大區別)。這就意味著你可以很容易地通過使用OS特有的或編寫新的(命令)程式擴展該工具;然而,這也意味著你將自己限制在了特定的OS,或特定的OS類型上,如Unix。
Makefile也很可惡。任何使用過他們的人都碰到過可惡的tab問題。Ant的原作者經常這樣問自己:“是否我的命令不執行只是因為在我的tab前有一個空格?!!”。類似於jam的工具很好地處理了這類問題,但是(用戶)必須記住和使用一種新的格式。
Ant就不同了。與基於shell命令的擴展模式不同,Ant用Java的類來擴展。(用戶)不必編寫shell命令,配置檔案是基於XML的,通過調用target樹,就可執行各種task。每個task由實現了一個特定Task接口的對象來運行。(如果你對Ant一點概念都沒有的話,可能看不懂這一節,沒有關係,後面會對target,task做詳細的介紹。你如果沒有太多的時間甚至可以略過這一節,然後再回來瀏覽一下這裡的介紹,那時你就會看懂了。同樣,如果你對make之類的工具不熟悉也沒關係,下面的介紹根本不會用到make中的概念。)
必須承認,這樣做,在構造shell命令時會失去一些特有的表達能力。如`find . -name foo -exec rm {}`,但卻給了你跨平台的能力-你可以在任何地方工作。如果你真的需要執行一些shell命令,Ant有一個<exec> task,這個task允許執行特定OS上的命令。
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等。
比較
Makefile有一些不足之處,比如很多人都會碰到的煩人的Tab問題。最初的Ant開發者多次強調”只是我在Tab前面加了一個空格,所以我的命令就不能執行”。有一些工具在一定程度上解決了這個問題,但還是有很多其他的問題。Ant則與一般基於命令的工具有所不同,它是Java類的擴展。Ant運行需要的XML格式的檔案不是Shell命令檔案。它是由一個Project組成的,而一個Project又可分成可多target,target再細分又分成很多task,每一個task都是通過一個實現特定接口的java類來完成的。
Ant的優點
Ant是Apache軟體基金會JAKARTA目錄中的一個子項目,它有以下的優點。
跨平台性。Ant是純Java語言編寫的,因此具有很好的跨平台性。
操作簡單。Ant是由一個內置任務和可選任務組成的。Ant運行時需要一個XML檔案(構建檔案)。
Ant通過調用target樹,就可以執行各種task。每個task實現了特定接口對象。由於Ant構建檔案時XML格式的檔案,所以很容易維護和書寫,而且結構很清晰。
Ant可以集成到開發環境中。由於Ant的跨平台性和操作簡單的特點,它很容易集成到一些開發環境中去。
Ant 開發
Ant的構建檔案
當開始一個新的項目時,首先應該編寫Ant構建檔案。構建檔案定義了構建過程,並被團隊開發中每個人使用。Ant構建檔案默認命名為build.xml,也可以取其他的名字。只不過在運行的時候把這個命名當作參數傳給Ant。構建檔案可以放在任何的位置。一般做法是放在項目頂層目錄中,這樣可以保持項目的簡潔和清晰。下面是一個典型的項目層次結構。
(1) src存放源檔案。
(2) class存放編譯後的檔案。
(3) lib存放第三方JAR包。
(4) dist存放打包,發布以後的代碼。
Ant構建檔案是XML檔案。每個構建檔案定義一個唯一的項目(Project元素)。每個項目下可以定義很多目標(target元素),這些目標之間可以有依賴關係。當執行這類目標時,需要執行他們所依賴的目標。
每個目標中可以定義多個任務,目標中還定義了所要執行的任務序列。Ant在構建目標時必須調用所定義的任務。任務定義了Ant實際執行的命令。Ant中的任務可以為3類。
(1) 核心任務。核心任務是Ant自帶的任務。
(2) 可選任務。可選任務實來自第三方的任務,因此需要一個附加的JAR檔案。
(3) 用戶自定義的任務。用戶自定義的任務是用戶自己開發的任務。
1.<project>標籤
每個構建檔案對應一個項目。<project>標籤是構建檔案的根標籤。它可以有多個內在屬性,就如代碼中所示,其各個屬性的含義分別如下。
(1) default表示默認的運行目標,這個屬性是必須的。
(2) basedir表示項目的基準目錄。
(3) name表示項目名。
(4) description表示項目的描述。
每個構建檔案都對應於一個項目,但是大型項目經常包含大量的子項目,每一個子項目都可以有自己的構建檔案。
2.<target>標籤
一個項目標籤下可以有一個或多個target標籤。一個target標籤可以依賴其他的target標籤。
例如,有一個target用於編譯程式,另一個target用於生成執行檔。在生成執行檔之前必須先編譯該檔案,因此執行檔的target依賴於編譯程式的target。Target的所有屬性如下。
(1).name表示標明,這個屬性是必須的。
(2).depends表示依賴的目標。
(3)if表示僅當屬性設定時才執行。
(4)unless表示當屬性沒有設定時才執行。
(5)description表示項目的描述。
Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序依次執行每個target。在執行之前,首先需要執行它所依賴的target。程式中的名為run的target的depends屬性compile,而名為compile的target的depends屬性是prepare,所以這幾個target執行的順序是prepare->compile->run。
一個target只能被執行一次,即使有多個target依賴於它。如果沒有if或unless屬性,target總會被執行。
3.<mkdir>標籤
該標籤用於創建一個目錄,它有一個屬性dir用來指定所創建的目錄名,其代碼如下:
<mkdir dir=”${class.root}”/>
通過以上代碼就創建了一個目錄,這個目錄已經被前面的property標籤所指定。
4<jar>標籤
該標籤用來生成一個JAR檔案,其屬性如下。
(1) destfile表示JAR檔案名稱。
(2) basedir表示被歸檔的檔案名稱。
(3) includes表示被歸檔的檔案模式。
(4) excludes表示被排除的檔案模式。
5.<javac標籤>
該標籤用於編譯一個或一組java檔案,其屬性如下。
(1).srcdir表示源程式的目錄。
(2).destdir表示class檔案的輸出目錄。
(3).include表示被編譯的檔案的模式。
(4).excludes表示被排除的檔案的模式。
(5).classpath表示所使用的類路徑。
(6).debug表示包含的調試信息。
(7).optimize表示是否使用最佳化。
(8).verbose 表示提供詳細的輸出信息。
(9).fileonerror表示當碰到錯誤就自動停止。
6.<java>標籤
該標籤用來執行編譯生成的.class檔案,其屬性如下。
(1).classname 表示將執行的類名。
(2).jar表示包含該類的JAR檔案名稱。
(3).classpath所表示用到的類路徑。
(4).fork表示在一個新的虛擬機中運行該類。
(5).failonerror表示當出現錯誤時自動停止。
(6).output 表示輸出檔案。
(7).append表示追加或者覆蓋默認檔案。
7.<delete>標籤
該標籤用於刪除一個檔案或一組檔案,其屬性如下。
(1)/file表示要刪除的檔案。
(2).dir表示要刪除的目錄。
(3).includeEmptyDirs 表示指定是否要刪除空目錄,默認值是刪除。
(4).failonerror 表示指定當碰到錯誤是否停止,默認值是自動停止。
(5).verbose表示指定是否列出所刪除的檔案,默認值為不列出。
8.<copy>標籤
該標籤用於檔案或檔案集的拷貝,其屬性如下。
(1).file 表示源檔案。
(2).tofile 表示目標檔案。
(3).todir 表示目標目錄。
(4).overwrite 表示指定是否覆蓋目標檔案,默認值是不覆蓋。
(5).includeEmptyDirs 表示制定是否拷貝空目錄,默認值為拷貝。
(6).failonerror 表示指定如目標沒有發現是否自動停止,默認值是停止。
(7).verbose 表示制定是否顯示詳細信息,默認值不顯示。
數據類型
在構建檔案中為了標識檔案或檔案組,經常需要使用數據類型。數據類型包含在org.apache.tool.ant.types包中。下面鏡簡單介紹構建檔案中一些常用的數據類型。
1. argument 類型
由Ant構建檔案調用的程式,可以通過<arg>元素向其傳遞命令行參數,如apply,exec和java任
務均可接受嵌套<arg>元素,可以為各自的過程調用指定參數。以下是<arg>的所有屬性。
(1).values 是一個命令參數。如果參數中有空格,但又想將它作為單獨一個值,則使用此屬性。
(2).file表示一個參數的檔案名稱。在構建檔案中,此檔案名稱相對於當前的工作目錄。
(3).line表示用空格分隔的多個參數列表。
(4).path表示路徑。
2.environment 類型
由Ant構建檔案調用的外部命令或程式,<env>元素制定了哪些環境變數要傳遞給正在執行的系統命令,<env>元素可以接受以下屬性。
(1).file表示環境變數值的檔案名稱。此檔案名稱要被轉換位一個絕對路徑。
(2).path表示環境變數的路徑。Ant會將它轉換為一個本地約定。
(3).value 表示環境變數的一個直接變數。
(4).key 表示環境變數名。
注意 file path 或 value只能取一個。
3.filelist類型
Filelist 是一個支持命名的檔案列表的數據類型,包含在一個filelist類型中的檔案不一定是存在的檔案。以下是其所有的屬性。
(1).dir是用於計算絕對檔案名稱的目錄。
(2).files 是用逗號分隔的檔案名稱列表。
(3).refid 是對某處定義的一個<filelist>的引用。
注意 dir 和 files 都是必要的,除非指定了refid(這種情況下,dir和files都不允許使用)。
4.fileset類型
Fileset 數據類型定義了一組檔案,並通常表示為<fileset>元素。不過,許多ant任務構建成了隱式的fileset,這說明他們支持所有的fileset屬性和嵌套元素。以下為fileset 的屬性列表。
(1).dir表示fileset 的基目錄。
(2).casesensitive的值如果為false,那么匹配檔案名稱時,fileset不是區分大小寫的,其默認值為true.
(3).defaultexcludes 用來確定是否使用默認的排除模式,默認為true。
(4).excludes 是用逗號分隔的需要派出的檔案模式列表。
(5).excludesfile 表示每行包含一個排除模式的檔案的檔案名稱。
(6).includes 是用逗號分隔的,需要包含的檔案模式列表。
(7).includesfile 表示每行包括一個包含模式的檔案名稱。
5.patternset 類型
Fileset 是對檔案的分組,而patternset是對模式的分組,他們是緊密相關的概念。<patternset>支持4個屬性:includes excludex includexfile 和 excludesfile,與fileset相同。Patternset 還允許以下嵌套元素:include,exclude,includefile 和 excludesfile.
6.filterset 類型
Filterset定義了一組過濾器,這些過濾器將在檔案移動或複製時完成檔案的文本替換。
主要屬性如下:
(1).begintoken 表示嵌套過濾器所搜尋的記號,這是標識其開始的字元串。
(2).endtoken表示嵌套過濾器所搜尋的記號這是標識其結束的字元串。
(3).id是過濾器的唯一標誌符。
(4).refid是對構建檔案中某處定義一個過濾器的引用。
7.Path類型
Path元素用來表示一個類路徑,不過它還可以用於表示其他的路徑。在用作幾個屬性時,路經中的各項用分號或冒號隔開。在構建的時候,此分隔設定將代替當前平台中所有的路徑分隔設定,其擁有的屬性如下。
(1).location 表示一個檔案或目錄。Ant在內部將此擴展為一個絕對路徑。
(2).refid 是對當前構建檔案中某處定義的一個path的引用。
(3).path表示一個檔案或路徑名列表。
8.mapper類型
Mapper類型定義了一組輸入檔案和一組輸出檔案間的關係,其屬性如下。
(1).classname 表示實現mapper類的類名。當內置mapper不滿足要求時,用於創建定製mapper.
(2).classpath表示查找一個定製mapper時所用的類型路徑。
(3).classpathref是對某處定義的一個類路徑的引用。
(4).from屬性的含義取決於所用的mapper.
(5).to屬性的含義取決於所用的mapper.
(6).type屬性的取值為identity,flatten glob merge regexp 其中之一,它定義了要是用的內置mapper的類型。
Ant的安裝
解包後在系統可執行路徑中加入指向ant的bin的路徑就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
Windows 下的安裝:
下載後解壓到某個目錄我這裡以D:\apache-ant-1.7.1為例子:
添加path全局環境變數:D:\apache-ant-1.7.1\bin
這樣在command line就可以運行ant命令了
測試:運行->cmd/command->ant 如果沒有安裝成功則回報找不到這個命令,安裝成功會有相關的提示信息顯示。
這樣執行ant 後,如果不指定配置檔案ant會預設找build.xml這個配置檔案,並根據配置檔案執行任務,預設的任務設定可以指向最常用的任務,比如: build,或指向列印幫助信息:usage,告訴用戶有那些腳本選項可以使用。
Ant的運行
安裝好Ant並且配置好路徑之後,在命令行中切換到構建檔案的目錄,輸入Ant命令就可以運行Ant.若沒有指定任何參數,Ant會在當前目錄下查詢build.xml檔案。如果找到了就用該檔案作為構建檔案。如果使用了 –find 選項,Ant 就會在上級目錄中找構建檔案,直至到達檔案系統的根目錄。如果構建檔案的名字不是build.xml ,則Ant運行的時候就可以使用 –buildfile file,這裡file 指定了要使用的構建檔案的名稱,示例如下:
Ant如下說明了表示當前目錄的構建檔案為build.xml 運行 ant 執行默認的目標。
Ant –buildfile test.xml
使用當前目錄下的test.xml 檔案運行Ant ,執行默認的目標
Ant版本
2013年03月11日,Apache Ant 1.9 發布
戰隊
=ANT=. 戰隊是於2009年6月由鄭昊龍組建的一支娛樂型DOTA戰隊,目前已發展成國內一支專業電子競技俱樂部,擁有國內各地的頂級競技選手。=ANT=.總部設在江蘇常州,在杭州設有子公司,該戰隊由天築設計責任有限公司所有。
現有成員列表:
=ANT=.McAfee (隊長)(人稱M大神,拿一血到最後一血)
=ANT=.歲月弦歌(燒餅)(送一血)
=ANT=.溪(此人數據帝 強大的意識經常被人叫做圖B)
=ANT=.凌雲(一直強調自己是象刀白丁一樣的人物 而刀白沒有否認)
=ANT=.Rush Do(RUSH哥 傳說風騷一時 尚能一DO)
=ANT=.熊寶寶(DOTA新人 進步奇快 殺不到人的時候 會說:我很善良)
=ANT=.刀白丁(此人大虎 如果能低調點 我們甚至有理由相信刀白每把都能超神)
=ANT=.D_曉調(支配慾極強 當然 他有這能力)
=ANT=.M(豬大腸)
=ANT=.H4
=ANT=.小西
=ANT=.小涵
=ANT=.MG
=ANT=.母狗(狂人)
=ANT=.明明
。。。
現任隊長=ANT=.McAfee 在DOTA界一度被人稱作M大神,也就是當今的第一DotAer。就算他開局很糟糕,但當看見隨後他的殺人數高踞榜首時不要感到驚奇,這真沒什麼可奇怪的。在最近的比賽中他帶領隊伍通過令人窒息的Gank摧毀對手。他可以勝任任何英雄,例無虛發的月神箭,無畏的賞金獵人,甚至巫醫都是非常IMBA。
著名玩家方面對McAfee的反應:
SK|Loda:我很後悔自己來中國比賽——我是說,當我必須要和McAfee做對手的時候。
MYM|H4nn1-:能不能能不能讓我們奪次冠,我在M神面前苦苦求了幾千年。幸運的是,他這次聽到了。
Travaka:如果你一定要問我為什麼會忽然成了這樣的高手,我只能告訴你,當我得到McAfee的指點的時候,我忽然明白了什麼叫青蛙變王子。
LightofHeaven:For Mother Russia!For McAfee!
ImbaQ: 你問我為什麼要混跡於IHCS?——我告訴你,這是任何一個有尊嚴、有氣節、不甘受辱的Dota玩家聽說McAfee決定參加正式比賽後所能做出的唯一選擇。
MYM|Merlini:別再問我為什麼現在這么頹!都是你們害的!如果不是你們吹捧我的Farm能力,我也不會衝動到去和McAfee拼補刀!也就不會有我的今天這么頹!
ARS-ART:我只是想說“哥們兒我覺得你應該好好教我怎么GANK……”
國際足聯代碼
ANT是荷屬安的列斯( Netherlands Antilles)在國際足聯的代碼。
網路標準
何為ANT
在2.4GHz非授權頻段上,目前已經雲集了藍牙、Wi-Fi、Zigbee、WLAN、UWB等多個標準無線協定,前三者是最常用現在,以低功耗、低成本、易開發為主要優勢的非標準無線射頻協定也開始湧入市場。
ANT無線網路是加拿大Dynastream Innovations 公司發起並推動的低功耗無線網路標準。可以實現以及完成zigbee的大多數套用場景,並具有更低的功耗,更快的開發套用,更快捷的開發套用周期,無需為協定付費等優點。
兩大優勢:一,極低的功耗,二,網路部署極為靈活,可以是點對點,星形,樹形,乃至複雜的網狀網路。通過適當的配置,網路中的某個節點可以同時分屬於不同的網路,在不同的通道上,既可以是主節點,也可以是從節點。但是ZigBee端設備(ZED)只能夠和它的父節點(ZC或者ZR)通信,不能為其它設備進行數據中繼,因為對節點來說,如果沒有合適的類型將很難隨意加入或者離開網路。
ANT是一個無線個人區域網路(PAN)通訊技術,可以確保連線數據完整性,並是一個低成本、低功耗無線網路協定。該協定調製方式是採用GFSK調製,支持星型和端對端等多種組網形式,支持的節點是2到數千個以上,所以,它不但威脅到藍牙套用還威脅到Zigbee套用。
ANT協定是近距離無線通信協定的一種, 是一種超低功耗短距離無線通信的方式之一. 它的數據傳輸效率一般達到47%以上, 支持睡眠模式, 有8個獨立頻道, 每個頻道最多支持218節點. ANT協定支持三種信息: broadcast, acknowledged, burst.
天線硬體接口
ANT就是天線接口,用來連線天線。
常見於收音機,或者GPS等上面。在接收短波或FM時需要外界天線,以增加接收靈敏度。