Sky's blog

          我和我追逐的夢

          常用鏈接

          統(tǒng)計

          其他鏈接

          友情鏈接

          最新評論

          讓ivy支持maven的classifier屬性

              在maven中,對于一個依賴,除了groupId,artifactId,version這三個屬性來作為標志之外,還有一個特殊的屬性可用: classifier。

              以下面的testng的為例:

          <dependency>
            
          <groupId>org.testng</groupId>
            
          <artifactId>testng</artifactId>
            
          <version>5.10</version>
            
          <classifier>jdk15</classifier>
          </dependency>

              ivy中依賴對應(yīng)的有屬性org,name,rev,分別對應(yīng)到maven中的groupId,artifactId,version.

              <dependency org="org.testng" name="testng" rev="5.10" />

              但是ivy中沒有和maven的classifier屬性相對應(yīng)的屬性,因此無法表示classifier。這樣就造成一些問題,比如上面的testng的例子,在ivy中如果將對testng的依賴定義寫成上面的樣子,則解析時是無法獲取到我們想到的依賴 testng-5.10.jar的,從而造成解析失敗:

          [ivy:resolve] :: problems summary ::
          [ivy:resolve] :::: WARNINGS
          [ivy:resolve]         [FAILED     ] org.testng#testng;5.10!testng.jar:  (0ms)
          [ivy:resolve]     ==== shared: tried
          [ivy:resolve]       G:\workspace\study\java\tools\ivy\skyMailDemo\skyMail\ivy\setup\DepositorySetup\userdir/shared/org.testng/testng/5.10/jars/testng.jar
          [ivy:resolve]     ==== public: tried
          [ivy:resolve]       http://192.168.0.30:8081/nexus/content/groups/public/org/testng/testng/5.10/testng-5.10.jar
          [ivy:resolve]         ::::::::::::::::::::::::::::::::::::::::::::::
          [ivy:resolve]         ::              FAILED DOWNLOADS            ::
          [ivy:resolve]         :: ^ see resolution messages for details  ^ ::
          [ivy:resolve]         ::::::::::::::::::::::::::::::::::::::::::::::
          [ivy:resolve]         :: org.testng#testng;5.10!testng.jar
          [ivy:resolve]         ::::::::::::::::::::::::::::::::::::::::::::::

              我們可以看一下maven倉庫中testng是如何保存的,首先看maven2的官方倉庫:

          http://repo1.maven.org/maven2/org/testng/testng/5.10/
          testng-5.10-jdk14.jar                              06-Aug-2009 18:22             1002817
          testng-5.10-jdk14.jar.md5                          06-Aug-2009 18:25                 128
          testng-5.10-jdk14.jar.sha1                         06-Aug-2009 18:25                 136
          testng-5.10-jdk15.jar                              06-Aug-2009 18:22              871404
          testng-5.10-jdk15.jar.md5                          06-Aug-2009 18:25                 128
          testng-5.10-jdk15.jar.sha1                         06-Aug-2009 18:25                 136
          testng-5.10-sources.jar                            06-Aug-2009 18:23              339279
          testng-5.10-sources.jar.md5                        06-Aug-2009 18:23                 130
          testng-5.10-sources.jar.sha1                       06-Aug-2009 18:23                 138
          testng-5.10.pom                                    06-Aug-2009 18:23                2115
          testng-5.10.pom.md5                                06-Aug-2009 18:23                 122
          testng-5.10.pom.sha1                               06-Aug-2009 18:23                 130

              然后再看一下ivy官方提供的maven2倉庫

          http://mirrors.ibiblio.org/pub/mirrors/maven2/org/testng/testng/5.10/
           testng-5.10-jdk14.jar                  06-Aug-2009 14:22  1.0M  
           testng-5.10-jdk14.jar.md5              06-Aug-2009 14:25  128   
           testng-5.10-jdk14.jar.sha1             06-Aug-2009 14:25  136   
           testng-5.10-jdk15.jar                  06-Aug-2009 14:22  851K  
           testng-5.10-jdk15.jar.md5              06-Aug-2009 14:25  128   
           testng-5.10-jdk15.jar.sha1             06-Aug-2009 14:25  136   
           testng-5.10-sources.jar                06-Aug-2009 14:23  331K  
           testng-5.10-sources.jar.md5            06-Aug-2009 14:23  130   
           testng-5.10-sources.jar.sha1           06-Aug-2009 14:23  138   
           testng-5.10.pom                        06-Aug-2009 14:23  2.1K  
           testng-5.10.pom.md5                    06-Aug-2009 14:23  122   
           testng-5.10.pom.sha1                   06-Aug-2009 14:23  130

              我們會發(fā)現(xiàn),根本不存在testng-5.10.jar 這樣的制品,而是有testng-5.10-jdk14.jar 和testng-5.10-jdk15.jar,即必須明確給出classifier屬性以確定制品名稱并下載。

              那么,在ivy中如何指定classifier屬性呢?

              首先檢查ivy的文檔,看在ivy.xml中的dependency 元素上是否有對應(yīng)的可用的屬性,結(jié)果發(fā)現(xiàn)沒有。隨即祭出google大法,終于在ivy官網(wǎng)的JIRA系統(tǒng)中找到了對這個問題的處理方式(請留意粗體加下劃線的內(nèi)容):

              1. 修改ivy.xml文件
                  增加xmlns:m的namspace定義
          <ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">

                  在需要制定classifier的依賴上使用屬性m:classifier
          <dependency org="org.testng" name="testng" rev="5.10" m:classifier="jdk15" />

              2. 修改ivysettings,在pattern中增加對classifier的支持
              <resolvers>
                  
          <ibiblio name="public" m2compatible="true" root="http://192.168.0.30:8081/nexus/content/groups/public/" pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
              
          </resolvers>

             

          posted on 2009-10-15 01:56 sky ao 閱讀(2790) 評論(0)  編輯  收藏 所屬分類: project building

          主站蜘蛛池模板: 浦东新区| 徐州市| 西吉县| 赫章县| 丽水市| 阿拉善左旗| 双鸭山市| 祁阳县| 汪清县| 南安市| 阿拉善右旗| 定远县| 全椒县| 蚌埠市| 德清县| 依兰县| 新昌县| 乌兰察布市| 靖宇县| 宁波市| 汾阳市| 彭水| 镇原县| 陇南市| 云龙县| 沂水县| 长葛市| 育儿| 紫金县| 伊春市| 陆河县| 永年县| 蒙山县| 古浪县| 水富县| 禄劝| 永和县| 鄂伦春自治旗| 波密县| 潞城市| 舒兰市|