<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    已經使用ant的項目如何利用maven來管理依賴



    maven對于管理大型項目來說是不錯的東西, 當然也可以僅用它來做依賴管理 (類似的有IVY), 不過我們有一些項目已經使用了ant來構建, 那么如何能二者兼得? 對ant的build.xml做小小的改動就可以同時支持使用maven來做依賴管理, 也可以使用ant來做構建. --- 當然簡單的構建其實不需要ant, maven完全可以勝任.


    Maven的一些特性
    •   可以方便進行依賴管理
    •   提供了標準的目錄結構, 保證大家統一. (也可以覆蓋默認設置)
    •   利用profile解決測試, 生產環境的配置問題
    •   提供了標準的構建任務, 不需要自己寫
    •   多個項目可以集中管理, 可以樹狀結構管理, 一目了然. 可以快速建立起開發環境. 基本上幾步就可以編譯項目了, 相反手動方式下, 每個項目都要配置依賴就要累死了.
    •   基于約定的方式, 對于特殊情況處理起來有一些麻煩, 一些情況下ant更靈活方便.



    我們的目標

    1. 對喜歡maven的人, 能快速利用maven創建新的項目, 而不用痛苦地去一個一個找依賴, 作為普通開發者可以不關心復雜的build.xml, 或者直接用maven構建
    2. 對原本使用ant腳本的項目, 在要求兼容maven的情況下, 僅僅添加maven的依賴管理, 同時可以為ant提供依賴包的自動收集, 不需要手動自己找.
    3. 推行maven的使用, 快速創建開發環境.
    4. subversion不在保存一堆一堆巨大的jar包


    本文的內容主要是針對上面的第二條, 當然最終是希望推行maven, 方便管理.

    首先我們要安裝好ant, maven2, 配置好環境變量, 修改maven的緩存路徑.

    然后安裝 http://maven.apache.org/ant-tasks/index.html 包, 可以直接放在ant的lib目錄下, 當然還有其他方式, 例如在build.xml里指定路徑.


    準備pom.xml, 針對本文所說情況, 只需要寫基本信息和依賴包配置即可.

    舉例:



    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation
    ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        
    <modelVersion>4.0.0</modelVersion>

        
    <groupId>com.test</groupId>
        
    <artifactId>maventest</artifactId>
        
    <name>Maven Test</name>
        
    <version>1.0</version>

        
    <build>
            
    <plugins>
                
    <plugin>
                    
    <groupId>org.apache.maven.plugins</groupId>
                    
    <artifactId>maven-compiler-plugin</artifactId>
                    
    <configuration>
                        
    <source>1.6</source>
                        
    <target>1.6</target>
                    
    </configuration>
                
    </plugin>
            
    </plugins>
        
    </build>

        
    <dependencies>
            
    <dependency>
                
    <groupId>org.jgroups</groupId>
                
    <artifactId>jgroups</artifactId>
                
    <version>2.10.0.GA</version>
            
    </dependency>
            
    <dependency>
                
    <groupId>commons-lang</groupId>
                
    <artifactId>commons-lang</artifactId>
                
    <version>2.5</version>
            
    </dependency>
            
    <dependency>
              
    <groupId>junit</groupId>
              
    <artifactId>junit</artifactId>
              
    <version>3.8.1</version>
              
    <scope>test</scope>
            
    </dependency>
        
    </dependencies>

    </project>


    如果有本地倉庫, 還可以配置repository. (推薦優先使用本地服務器), 這個文件內容很少, 主要是依賴包的信息, 也是我們最關注的信息.


    下面我們來修改我們的build.xml, 為ant提供依賴服務:


    <project name="jgroups" basedir="." xmlns:artifact ="urn:maven-artifact-ant" >

        
    <!-- 存放依賴包的目錄 -->
        
    <property name="build.lib.dir" location="./lib" />

        
    <!-- find maven-ant-tasks, you can use classpathref to specify the jar, or just copy the jar to ant/lib  -->
        
    <typedef  resource ="org/apache/maven/artifact/ant/antlib.xml"  uri="urn:maven-artifact-ant"  />

        
    <!-- maven的文件 -->
        
    <artifact:pom  id ="maven.project"  file ="pom.xml"   />

        
    <artifact:dependencies filesetId="deps.fileset.compile" useScope="compile">
            
    <!--<pom file="pom.xml"/>-->
            
    <pom refid="maven.project"  />
        
    </artifact:dependencies>

        
    <artifact:dependencies filesetId="deps.fileset.test" scopes="test">
            
    <pom refid="maven.project"  />
        
    </artifact:dependencies>

        
    <artifact:dependencies filesetId="deps.fileset.provide" scopes="provide">
            
    <pom refid="maven.project"  />
        
    </artifact:dependencies>

        
    <target name="lib.init">
            
    <copy todir="${build.lib.dir}/compile">
                
    <fileset refid="deps.fileset.compile"/>
                
    <mapper type="flatten"/>
            
    </copy>
            
    <copy todir="${build.lib.dir}/test">
                
    <fileset refid="deps.fileset.test"/>
                
    <mapper type="flatten"/>
            
    </copy>
            
    <copy todir="${build.lib.dir}/provide">
                
    <fileset refid="deps.fileset.test"/>
                
    <mapper type="flatten"/>
            
    </copy>
        
    </target>


        
    <!-- ..其他..     -->


    </project>



    主要增加了一個target, 就是把maven中定義的依賴包復制到指定目錄下, 而不需要自己準備或者從subversion下載.

    (ant的其他target也可使用定義的幾個變量作為classpath)

    一般依賴分三種, 請注意區分, 否則把servlet等jar包發布到服務器, 一般會出錯:
    •   compile: 編譯, 用于運行時和編譯時, 打包發布要包含
    •   provide: 容器提供的類, 主要用于編譯, 打包發布時不包含, 例如servlet-api
    •   test: 僅用于編譯和運行測試用例, 打包時不包含.



    使用方法:
    •   checkout項目
    •   使用ide的方式導入maven項目. 如果需要手動: 運行ant lib.init   (如果下載jar時包出錯, 注意檢查groupId, artifactId和版本號.)
    •   手動創建項目, 指定library, 就不需要一個一個找了. (如果導入maven項目的方式, 則一切自動會配置好)





    參考網頁:
    http://book.51cto.com/art/201001/177845.htm
    http://skydream.javaeye.com/blog/437938
    http://maven.apache.org/ant-tasks/examples/dependencies.html



    posted on 2010-11-06 11:50 Scud(飛云小俠) 閱讀(6581) 評論(1)  編輯  收藏

    評論

    # re: 已經使用ant的項目如何利用maven來管理依賴 2011-02-12 16:31 陳于喆

    我的項目也全是ant,最近在考慮怎么用maven,先關注下,等會再來看  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2010年11月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導航

    統計

    公告

    文章發布許可
    創造共用協議:署名,非商業,保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产情侣久久久久aⅴ免费 | WWW国产亚洲精品久久麻豆| 国产精品亚洲αv天堂无码| 亚洲伦理一区二区| 成年女人视频网站免费m| 野花高清在线观看免费完整版中文| 免费人成视频在线观看不卡| 亚洲精品无码不卡| 亚洲熟女精品中文字幕| A国产一区二区免费入口| 久久这里只有精品国产免费10| 久久久久亚洲精品男人的天堂| 亚洲日韩国产精品无码av| 四虎精品免费永久免费视频| 亚洲视频免费播放| 国产91精品一区二区麻豆亚洲| 激情内射亚洲一区二区三区爱妻| 久青草视频97国内免费影视| 最近中文字幕免费mv视频8| 国产亚洲3p无码一区二区| 欧洲亚洲国产精华液| 久久久久久精品免费看SSS| 狠狠综合久久综合88亚洲| 亚洲日韩国产一区二区三区在线| 久久香蕉国产线看免费| 国产成人综合久久精品免费| 亚洲黄色片免费看| 国产人成网在线播放VA免费| 在线观看免费人成视频| 国产亚洲精久久久久久无码| 国产亚洲精品精品精品| 成人免费视频77777| 无码欧精品亚洲日韩一区| 色婷婷综合缴情综免费观看| 毛片免费观看的视频| 在线免费观看亚洲| 久久久久免费视频| www.亚洲一区| 亚洲1区2区3区精华液| 国国内清清草原免费视频99| 亚洲国产成人精品不卡青青草原|