作者:
江南白衣 看著log4j-2.13.jar被每個(gè)項(xiàng)目每個(gè)版本里一次又一次無限下載,你就會(huì)覺得用Maven2 管理Library實(shí)在很環(huán)保。
而且,Java的類庫(kù)也急需擺脫這種無身份無地位一個(gè)jar包隨處擺放的境況。Maven給Jar以名份是一個(gè)好方向。
其實(shí)Ruby和php都已有了這樣的管理工具和官方網(wǎng)站,所有的Ruby包在機(jī)器上都像rpm那樣是installed的。Maven既然代表了Java,但愿也能好好發(fā)展。
完全使用Maven來做全部事情有點(diǎn)超前,因此我也只是是用它的library管理功能,真正用的深入的是pesome郁也風(fēng)。
1. 查找Jar包在官網(wǎng)的路徑
http://www.mavenregistry.com/ ,太實(shí)用了。
2. 用Ant 調(diào)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對(duì)象--maven.fileset。
第3句把maven.fileset定義的,放在${user.home}/.m2/里的jar 拷貝到項(xiàng)目lib目錄。
不過,相對(duì)來講Maven2還很不成熟,比如很多項(xiàng)目的pom是亂寫的,比如maven官網(wǎng)的速度實(shí)在太差,還經(jīng)常抽筋死掉,比如有一些想要的新版官網(wǎng)上沒有。
3. 自建私服
自己建個(gè)私服是不錯(cuò)的主意。其實(shí)也簡(jiǎn)單,隨便拿臺(tái)http服務(wù)器,把${user.home}/.m2/ 目錄傳上去就行了
在pom文件中,把私服的http url寫在官網(wǎng)的前面。
<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包
對(duì)于官網(wǎng)沒有的新版,按目錄路徑傳一個(gè)jar包,加一個(gè)最簡(jiǎn)單的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>
相關(guān)文章:
UTF-8、Subversion、Maven2--2007年的項(xiàng)目特征