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

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