??? 作者:江南白衣?

??? 看著log4j-2.13.jar被每個項目每個版本里一次又一次無限下載,你就會覺得用Maven2 管理Library實在很環保。

???? 而且,Java的類庫也急需擺脫這種無身份無地位一個jar包隨處擺放的境況。Maven給Jar以名份是一個好方向。

???? 其實Ruby和php都已有了這樣的管理工具和官方網站,所有的Ruby包在機器上都像rpm那樣是installed的。Maven既然代表了Java,但愿也能好好發展。

???? 完全使用Maven來做全部事情有點超前,因此我也只是是用它的library管理功能,真正用的深入的是pesome郁也風。

???1.? 查找Jar包在官網的路徑

??? http://www.mavenregistry.com/??,太實用了。

?? 2. 用Ant??調Maven管理 JAR
????
???SpringSide使用maven2的ant task,不需要用戶裝maven,直接用ant腳本來下載依賴包并copy到$springside_home/lib。腳本如下:

?<typedef?resource="org/apache/maven/artifact/ant/antlib.xml"?uri="urn:maven-artifact-ant">????
?????
<classpath>
?????????????<pathelement?location="lib/maven-artifact-ant-2.0.2-dep.jar"/>
??????</classpath>
?</typedef>
?<artifact:dependencies?pathId="maven.classpath"?filesetId="maven.fileset">
?????? ?<artifact:pom?file="pom.xml"/>?
?
</artifact:dependencies>

?<copy?todir="lib/">
????????<fileset?refid="maven.fileset"/>
????????<mapper?type="flatten"/>???
?
</copy>

??? 第1句從maven-artifact-ant-2.0.2-dep.jar讀antlib.xml,讀出一堆maven的task。

????第2句分析pom.xml里的jar,如果沒有就上http://repo1.maven.org/maven2?把jar下載到${user.home}/.m2/目錄。并把所有jar定義成ant的fileset對象--maven.fileset。

???? 第3句把maven.fileset定義的,放在${user.home}/.m2/里的jar 拷貝到項目lib目錄。

??
????不過,相對來講Maven2還很不成熟,比如很多項目的pom是亂寫的,比如maven官網的速度實在太差,還經常抽筋死掉,比如有一些想要的新版官網上沒有。

??? 3. 自建私服
?
???? 自己建個私服是不錯的主意。其實也簡單,隨便拿臺http服務器,把${user.home}/.m2/ 目錄傳上去就行了
???? 在pom文件中,把私服的http url寫在官網的前面。???

?<repositories>
????????
<repository>
????????????
<id>springside</id>
??????
??????<url>http://www.springside.org.cn/maven2</url>
????????
</repository>
????????
<repository>
????????????
<id>maven</id>
????????????
<name>slowly?office?site</name>
????????????
<url>http://repo1.maven.org/maven2</url>
????????
</repository>
????
</repositories>


?? 4. 在私服加入自己的jar包

??? 對于官網沒有的新版,按目錄路徑傳一個jar包,加一個最簡單的pom文件,并且為它們生成checksum文件,用ant的task就可以:

??<target?name="checksum"?description="為maven私服上的文件生成CHECKSUM">
????????
<checksum?file="C:\checksum\spring-mock-2.0-m3.pom"?algorithm="SHA"?fileext=".sha1"/>
????
</target>



相關文章:
UTF-8、Subversion、Maven2--2007年的項目特征