日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

maven 和 ant 比較

 橙zc 2014-09-15

一個(gè)簡(jiǎn)單的 build.xml 文件:

  1. <project name="my-project" default="dist" basedir=".">  
  2. <description>  
  3. simple example build file  
  4. </description>  
  5. <!-- set global properties for this build -->  
  6. <property name="src" location="src/main/java"/>  
  7. <property name="build" location="target/classes"/>  
  8. <property name="dist" location="target"/>  
  9. <target name="init">  
  10. <!-- Create the time stamp -->  
  11. <tstamp/>  
  12. <!-- Create the build directory structure used by compile -->  
  13. <mkdir dir="org.apache.maven.model.Build@d7e661"/>  
  14. </target>  
  15. <target name="compile" depends="init"  
  16. description="compile the source " >  
  17. <!-- Compile the java code from ${src} into org.apache.maven.model.Build@d7e661 <javac srcdir="${src}" destdir="org.apache.maven.model.Build@d7e661"/>  
  18. </target>  
  19. <target name="dist" depends="compile"  
  20. description="generate the distribution" >  
  21. <!-- Create the distribution directory -->  
  22. <mkdir dir="${dist}/lib"/>  
  23. <!-- Put everything in org.apache.maven.model.Build@d7e661 into the MyProject-${<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="org.apache.maven.model.</target>  
  24. <target name="clean"  
  25. description="clean up" >  
  26. <!-- Delete the org.apache.maven.model.Build@d7e661 and ${dist} directory trees <delete dir="org.apache.maven.model.Build@d7e661"/>  
  27. <delete dir="${dist}"/>  
  28. </target>  
  29. </project>  


在這個(gè)簡(jiǎn)單的 Ant 例子中,你能看到,你需要明確的告訴 Ant 你想讓它做什么。有一個(gè)包含 javac 任務(wù)的編譯目標(biāo)用來將 src/main/java 的源碼編譯至 target/classes目錄。你必須明確告訴 Ant 你的源碼在哪里,結(jié)果字節(jié)碼你想存儲(chǔ)在哪里,如何將這些字節(jié)碼打包成 JAR 文件。雖然最近有些進(jìn)展以幫助 Ant 減少程序,但一個(gè)開發(fā)者對(duì)Ant 的感受是用XML 編寫程序語(yǔ)言。用 Maven 樣例與之前的 Ant 樣例做個(gè)比較。在 Maven 中,要從 Java 源碼創(chuàng)建一個(gè)JAR 文件,你只需要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的
pom.xml,將你的源碼放在 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/java ,然后從命令行運(yùn)行 mvn install。下面的樣例 Maven pom.xml 文件能完成和之前 Ant 樣例所做的同樣的事情。



  1. <project>  
  2. <modelVersion>4.0.0</modelVersion>  
  3. <groupId>org.sonatype.mavenbook</groupId>  
  4. <artifactId>my-project</artifactId>  
  5. <version>1.0</version>  
  6. </project>  


這就是你 pom.xml 的全部。從命令行運(yùn)行 mvn install 會(huì)處理資源文件,編譯源代碼,運(yùn)行單元測(cè)試,創(chuàng)建一個(gè) JAR ,然后把這個(gè) JAR 安裝到本地倉(cāng)庫(kù)以為其它項(xiàng)目提供重用性。不用做任何修改,你可以運(yùn)行 mvn site ,然后在 target/site 目錄找到一個(gè) index.html 文件,這個(gè)文件鏈接了 JavaDoc 和一些關(guān)于源代碼的報(bào)告。


Ant 和 Maven 的區(qū)別是:

Apache Ant

· Ant 沒有正式的約定如一個(gè)一般項(xiàng)目的目錄結(jié)構(gòu),你必須明確的告訴 Ant 哪里去找源代碼,哪里放置輸出


· Ant 是程序化的,你必須明確的告訴 Ant 做什么,什么時(shí)候做。你必須告訴它去編譯,然后復(fù)制,然后壓縮。


· Ant 沒有生命周期,你必須定義目標(biāo)和目標(biāo)之間的依賴。你必須手工為每個(gè)目標(biāo)附上一個(gè)任務(wù)序列。

Apache Maven

· Maven 擁有約定,因?yàn)槟阕裱思s定,它已經(jīng)知道你的源代碼在哪里。它把字節(jié)碼放到 target/classes ,然后在 target 生成一個(gè) JAR 文件。

· Maven 是聲明式的。你需要做的只是創(chuàng)建一個(gè) pom.xml 文件然后將源代碼放到默認(rèn)的目錄。Maven 會(huì)幫你處理其它的事情。

· Maven 有一個(gè)生命周期,當(dāng)你運(yùn)行 mvn install 的時(shí)候被調(diào)用。這條命令告訴 Maven 執(zhí)行一系列的有序的步驟,直到到達(dá)你指定的生命周期。遍歷生命周期旅途中的一個(gè)影響就是,Maven 運(yùn)行了許多默認(rèn)的插件目標(biāo),這些目標(biāo)完成了像編譯和創(chuàng)建一個(gè) JAR 文件這樣的工作。Maven 以插件的形式為一些一般的項(xiàng)目任務(wù)提供了內(nèi)置的智能。如果你想要編寫運(yùn)行單元測(cè)試,你需要做的只是編寫測(cè)試然后放到 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/test/java
,添加一個(gè)對(duì)于 TestNG 或者 JUnit 的測(cè)試范圍依賴,然后運(yùn)行 mvn test 。如果你想要部署一個(gè)web 應(yīng)用而非 JAR ,你需要做的是改變你的項(xiàng)目類型為 war ,然后把你文檔根目錄置為 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/src/main/webapp 。當(dāng)然,你可以用 Ant 做這些事情,但是你將需要從零開始寫這些指令。使用 Ant ,你首先需要確定 JUnit
JAR 文件應(yīng)該放在哪里,然后你需要?jiǎng)?chuàng)建一個(gè)包含這個(gè) JUnit JAR 文件的 classpath ,然后告訴 Ant 它應(yīng)該從哪里去找測(cè)試源代碼,編寫一個(gè)目標(biāo)來編譯測(cè)試源代碼為字節(jié)碼,使用 JUnit 來執(zhí)行單元測(cè)試。

沒有諸如 antlibs 和 lvy 等技術(shù)的支持(即使有了這些支持技術(shù)),Ant 給人感覺是自定義的程序化構(gòu)建。項(xiàng)目中一組高效的堅(jiān)持約定的 Maven POM ,相對(duì)于 Ant 的配置文件,只有很少的 XML 。Maven 的另一個(gè)優(yōu)點(diǎn)是它依靠廣泛公用的 Maven 插件。所有人使用 Maven Surefire 插件來運(yùn)行單元測(cè)試,如果有人添加了一些針對(duì)新的測(cè)試框架的支持,你可以僅僅通過在你項(xiàng)目的 POM 中升級(jí)某個(gè)特定插件的版本來獲得新的功能。

使用 Maven 還是 Ant 的決定不是非此即彼的,Ant 在復(fù)雜的構(gòu)建中還有它的位置。

如果你目前的構(gòu)建包含一些高度自定義的過程,或者你已經(jīng)寫了一些 Ant 腳本通過一種明確的方法完成一個(gè)明確的過程,而這種過程不適合 Maven 標(biāo)準(zhǔn),你仍然可以在

Maven 中用這些腳本。作為一個(gè) Maven 的核心插件, Ant 還是可用的。自定義的插件可以用 Ant 來實(shí)現(xiàn),Maven 項(xiàng)目可以配置成在生命周期中運(yùn)行 Ant 的腳本。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多