gradle的一個坑

gradle引入jar的方式很簡單,比如引入dubbo,只要加一行即可:


compile('com.alibaba:dubbo:2.4.10')


有時候我們希望排除依賴,可以這樣寫:


compile('com.alibaba:dubbo:2.4.10'){exclude groupId:'org.springframework'}

但是當你以這樣的方式發佈一個jar包到maven倉庫的時候,就要小心了,依賴你jar包的工程仍然會引入已經被你exclude的jar包。

查看生成的maven pom文件,是這樣的:

      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.4.10</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>null</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

注意其中artifactId(對應gradle中的moduleId)爲null,所以無法被排除。


如果你希望你的依賴在傳遞的時候也被排除,則必須寫上完整的groupId和moduleId:

compile('com.alibaba:dubbo:2.4.10'){exclude groupId:'org.springframework',moduleId:'spring'}

爲了避免出錯,建議各位開發寫排除依賴的時候都帶上moduleId

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章