使用相同依赖项的多个版本构建

时间:2017-09-18 08:43:31

标签: java gradle dependencies building

Android应用程序的两个组件依赖于同一个库的两个不同版本。 (google protobuf)。

即。 模块1 取决于 protobuf2 ,而模块2 需要 protobuf3

两个版本中所需的部分是互斥,因此不可互换

到目前为止,gradle内部使用两个版本中的最新版本,并且一个模块在缺少方法时中断。

是否可以强制gradle使用版本2作为2的依赖版本和版本3作为3版本的依赖版本?或者,解决这类问题的可能替代方案是什么?

干杯。

1 个答案:

答案 0 :(得分:2)

我想,如果您为各自的模块使用不同的build.gradle文件,并且这些模块由某个父build.gradle文件链接,那么应该没有任何问题。

我不是gradle的专家,但是长时间使用maven,这些在某种程度上是相似的。

在maven中,我可以在不同模块的pom文件中声明不同版本的相同依赖:

<dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.2.2</version>
</dependency> 

在另一个pom文件中,您可以声明不同的版本:

<dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.13.2</version>
</dependency>

现在,您可以看到两个不同版本的广告罐将添加到&#39; Maven-dependencies&#39;不同的模块。

在同一个pom文件中,如果不使用分析,它将无法实现。否则,它将始终从2-3个不同的版本罐中挑选最接近它的依赖树的jar。