Maven2 管理Library

     Author: 江南白衣

     HomePage: http://maven.apache.org/

     看着log4j-2.13.jar被每个项目每个版本里一次又一次无限下载,你就会觉得用Maven2 管理Library实在很环保。

     而且,Java的类库也急需摆脱这种无身份无地位一个jar包随处摆放的境况。Maven给Jar以名份是一个好方向。

     其实Ruby和php都已有了这样的管理工具和官方网站,所有的Ruby包在机器上都像rpm那样是installed的。Maven既然代表了Java,但愿也能好好发展。

     完全使用Maven来做全部事情有点超前,因此我也只是用它的library管理功能,Maven会将所有下载回来的jar按目录层次结构存放于C:/Documentment and Setting/your name/.m2/ 目录里,然后按项目的pom.xml文件需要,复制到你的项目目录中。  

1. 查找Jar包在官网的路径

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

2. 用Ant  调Maven管理 JAR

   SpringSide使用mavaen2的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.自建私服

3.1 设置私服

      自己建个私服是不错的主意。其实也简单,随便拿台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>

  3.2.加入自己的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>

4.其他注意事项

4.1 使用Proxy

当Http下载必须使用Proxy时,In Maven 2, they have been replaced by a settings.xml file, which goes in the $HOME/.m2 directory. Here is an example:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <proxies>
    <proxy>
      <active/>
      <protocol>http</protocol>
      <username>scott</username>
      <password>tiger</password>
      <port>8080</port>
      <host>my.proxy.url</host>
      <id/>
    </proxy>
  </proxies>
</settings>