Sky's blog

          我和我追逐的夢

          常用鏈接

          統計

          其他鏈接

          友情鏈接

          最新評論

          讓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中依賴對應的有屬性org,name,rev,分別對應到maven中的groupId,artifactId,version.

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

              但是ivy中沒有和maven的classifier屬性相對應的屬性,因此無法表示classifier。這樣就造成一些問題,比如上面的testng的例子,在ivy中如果將對testng的依賴定義寫成上面的樣子,則解析時是無法獲取到我們想到的依賴 testng-5.10.jar的,從而造成解析失?。?br />
          [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

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

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

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

              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

          主站蜘蛛池模板: 长丰县| 文成县| 五大连池市| 卢龙县| 昌宁县| 龙海市| 襄樊市| 泗阳县| 岐山县| 城市| 江山市| 即墨市| 宿松县| 平阳县| 白城市| 金华市| 曲沃县| 聂拉木县| 西安市| 思茅市| 邵东县| 介休市| 策勒县| 隆回县| 武平县| 彰化市| 巨野县| 墨脱县| 望江县| 黔西县| 肇东市| 麟游县| 嫩江县| 茌平县| 罗江县| 昌宁县| 和硕县| 沁水县| 永吉县| 盐城市| 商城县|