Android gradle依赖树使用方括号
我在看我的Android项目的Gradle依赖报告时,遇到了以下陈述Android gradle依赖树使用方括号,android,gradle,dependencies,Android,Gradle,Dependencies,我在看我的Android项目的Gradle依赖报告时,遇到了以下陈述 +--- com.google.android.gms:play-services-gcm:11.0.4 | +--- com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4 | | +--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4 |
+--- com.google.android.gms:play-services-gcm:11.0.4
| +--- com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4
| | +--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4
| | | \--- com.android.support:support-v4:25.2.0 -> 25.4.0 (*)
| | \--- com.google.android.gms:play-services-tasks:[11.0.4] -> 11.0.4
| | \--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4 (*)
我不明白的是com.google.android.gms:play services base:[11.0.4]->11.0.4
,方括号的使用和解析到同一版本
下面是如何在我的项目中声明依赖项
compile 'com.google.android.gms:play-services-gcm:11.0.4'
我相信它来自Maven依赖版本规范格式-请参阅参考资料和下面复制的具体细节:
->x如果1.0不可用,则通常表示1.0或更高版本。Maven插件可能会对此进行不同的解释,因此使用另一个更具体的选项更安全(,1.0]
->正好是1.0[1.0]
->1.2=1.5[1.2,1.3]
->->x=1.2。多个集合用逗号分隔(,1.0),[1.2,)
->如果已知1.1不能与库结合使用,则不包括1.1(,1.1),(1.1),)
[11.0.4]
,基于上述内容,这意味着版本是11.0.4。有趣的是,这与简单的11.0.4
之间有细微的区别-如果指定的版本由于某种原因不可用,那么前者将失败(我假设它会在依赖项解析过程中导致错误)而后者将导致使用更高版本(假设有可用版本)
至于它解析的原因(即,在依赖关系图中,它旁边有
->11.0.4
),我认为这是因为指定的版本包含版本范围引用字符(即使在这种情况下,这些字符意味着它将解析为该版本).我相信它来自Maven依赖版本规范格式-请参阅参考资料和下面复制的具体细节:
->x如果1.0不可用,则通常表示1.0或更高版本。Maven插件可能会对此进行不同的解释,因此使用另一个更具体的选项更安全(,1.0]
->正好是1.0[1.0]
->1.2=1.5[1.2,1.3]
->->x=1.2。多个集合用逗号分隔(,1.0),[1.2,)
->如果已知1.1不能与库结合使用,则不包括1.1(,1.1),(1.1),)
[11.0.4]
,基于上述内容,这意味着版本是11.0.4。有趣的是,这与简单的11.0.4
之间有细微的区别-如果指定的版本由于某种原因不可用,那么前者将失败(我假设它会在依赖项解析过程中导致错误)而后者将导致使用更高版本(假设有可用版本)
至于它解析的原因(即,在依赖关系图中,它旁边有->11.0.4
),我认为这是因为指定的版本包含版本范围引用字符(即使在本例中,这些字符意味着它将精确解析为该版本)