问题描述
我们的项目结构如下:
(b5df1cc)
common -> package1 \
\
(56e0bc0) \
common -> package2 -----> myApp
/
(101aa16) /
common -> package3 /
myApp
取决于package1
,pacakge2
,package3
和package1
,pacakge2
,pacakge3
,取决于{{ 1}}软件包(git packages),但是common
软件包(git软件包)可能具有不同的提交哈希。运行common
后,它将显示如下错误:
Flutter packages get
是否可以设置版本约束或其他方式来忽略git软件包的“版本解决失败”错误?因为我们可以确保Because every version of package1 from git depends on common from git {url: git@bitbucket.org:common.git,ref: b5df1cc,path: common} and every version of package2 from git depends on common from git {url: git@bitbucket.org:common.git,ref: 56e0bc0,path: common},package1 from git is incompatible with package2 from git.
So,because myApp depends on both package2 from git and package1 from git,version solving Failed.
Running "Flutter pub get" in myApp...
pub get Failed (1; So,version solving Failed.)
包(git包)中的所有代码都可以与common
,pacakge1
,package2
兼容,前提是它可以设置版本约束,例如{ {1}},我们可以让版本永远不会达到package3
,因此>=2.0.0 <3.0.0
可以与3.0.0
,myApp
,package1
等兼容。
已更新:
使用dependency_override可以解决此问题,但是需要在pacakge2
中设置package3
,当更新公共包时,我们需要更新{{ 1}}同时说,如果我更新dependency_override
中的通用软件包,我也需要更新myApp
中的通用软件包,这不是我期望的。
解决方法
可能的解决方法是使用dependency_overrides
注意:它可能会破坏package1 / 2/3,因为它会强制使用某些版本的通用软件包,而忽略了它们的约束