【发布时间】:2020-12-06 11:06:48
【问题描述】:
我们的项目结构如下:
(b5df1cc)
common -> package1 \
\
(56e0bc0) \
common -> package2 -----> myApp
/
(101aa16) /
common -> package3 /
myApp 依赖于package1、pacakge2、package3 和package1、pacakge2、pacakge3 依赖于common 包(git packages2 包),但@98765433 (git 包)可能有不同的提交哈希。运行flutter packages get后,会显示如下错误:
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, because myApp depends on both package2 from git and package1 from git, version solving failed.)
是否可以设置版本约束或其他方式来忽略 git 包的“版本解决失败”错误?因为我们可以保证common包(git包)中的所有代码都兼容pacakge1,package2,package3,如果可以设置版本约束,比如>=2.0.0 <3.0.0,我们可以让版本永远达不到3.0.0,所以myApp可以兼容package1、pacakge2、package3等。
更新:
使用dependency_override可以解决这个问题,但是dependency_override需要在myApp中设置,更新通用包时,我们需要同时更新myApp中的通用包,说如果我更新package1中的通用包,我也需要更新myApp中的通用包,这不是我的预期。
【问题讨论】:
标签: flutter dart flutter-dependencies flutter-packages dart-packages