前一篇曾說,Maven越強,隨之而來的議題(Agenda)也越多。甫解決一個議題兼問題(Problem)。因為要Demo JUnit的Project有import自行開發的Jar,在Project的Java Build Path有Add Jar,這在Run JUnit Test沒問題,但Run maven test就有問題了,因為有引用的Jar需定義在pom.xml。

  在Maven架構裡,若在Local Repository找不到pom.xml所定義的jar,那會先到預設的repo2.maven.org/maven2去找,以及若有在pom.xml設置其它的Repository所指定的URL找。是故先解燃眉之急,如何在Local Repository設定自行開發的Jar:

第一、找到Local Repository的位置,如我的在%USERPROFILE%\.m2\repository,假設我的JAR叫xyz.jar,group ID也是xyz好了,那麼建立在Local Repository目錄下建立xyz/xyz/1.0的子目錄,把xyz.jar改名為xyz-1.0.jar放進最底層子目錄,並在該目錄下新增一個xyz-1.0.pom的maven配置檔,內容如下(甚至連<?xml version="1.0">也不用設:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>xyz</groupId>
  <artifactId>xyz</artifactId>
  <version>1.0</version>
</project>

第二、要用引用xyz.jar的Project裡的pom.xml裡加這段就行了:

<dependency>
    <groupId>xyz</groupId>
    <artifactId>xyz</artifactId>
    <version>1.0</version>
</dependency>

  這樣的話,不只可以使用JUnit Test進行測試,也可以使用mvn test進行測試(當然也要dependency JUnit),達到摸蛤仔兼洗褲的功能。

  另外,我覺得Maven+Struts2一起Survey,學起來的效果蠻快的。一種是之前提到怎麼用Maven把Struts2的quick start下載下來快速建構一個原型Web。另一種是直接從Apache的Struts2官網下載最新的Full Distribution,目前是2.1.6版。解壓縮後假設folder是/struts2.1.6,在Eclipse使用File/Import/點選Maven Projects(在General Folder下),Root Directory就選到/struts2.1.6/src,src裡就有一個pom.xml,如此就花我好幾分鐘匯進幾十個Maven Project。藉由Struts2提供的飯粒,可以同時一窺Maven與Struts2的堂奧。而且Local Repositoy因為Struts 2.1.6大量下載需要用到的jar,日後就可以省很多功。

  之後的議題還是不少,例如:

第一、Maven如何串接SVN或CVS來做版本控管,知道是有<scm>這Tag可以做,但還沒Survey到那兒。而且有時open source的jar太新不能用,要保持舊一點的jar又找不到(如Struts 2.0.9在Maven找不到),這時存在自家的版本管理系統最妥當。

第二、如何搜尋最新版本的Jar,特別是for open source的,是有個Nexus工具,也還沒Survey。不過有個網址也是用Nexus很好用,位在Apache:https://repository.apache.org/index.html#welcome

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()