<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)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品免费在线观看| 国产免费69成人精品视频| 国产成人亚洲精品| 免费人妻av无码专区| 美女被cao网站免费看在线看| 亚洲av无码国产综合专区| 亚洲欧洲日韩不卡| 国产精品视频免费一区二区| 丰满少妇作爱视频免费观看| 亚洲最大黄色网址| 国产乱辈通伦影片在线播放亚洲| 精品熟女少妇av免费久久| 国产AV无码专区亚洲AV琪琪| 亚洲国产女人aaa毛片在线| 免费a级毛片在线观看| 91av在线免费视频| 一级白嫩美女毛片免费| 亚洲一区中文字幕在线观看| 亚洲中文字幕无码一区| 麻豆国产入口在线观看免费| 日本一区二区免费看| 青青草97国产精品免费观看| 激情综合亚洲色婷婷五月APP| 国产国拍亚洲精品mv在线观看| 免费网站看v片在线香蕉| 免费国产黄网站在线观看| 人妻18毛片a级毛片免费看| 国产成人精品日本亚洲直接| 亚洲av综合avav中文| 亚洲男人的天堂在线va拉文| 最新仑乱免费视频| 91av在线免费视频| 国产精品99久久免费观看| 永久免费无码日韩视频| 亚洲精品无码少妇30P| 亚洲精品在线电影| 亚洲久本草在线中文字幕| 亚洲性猛交XXXX| 亚洲另类激情专区小说图片| 日本a级片免费看| 精品久久免费视频|