可以在flutter中为git软件包设置版本限制吗?

问题描述

我们的项目结构如下:

(b5df1cc)
common    -> package1 \
                       \
(56e0bc0)               \
common    -> package2 -----> myApp
                        /
(101aa16)              /
common    -> package3 /

myApp取决于package1pacakge2package3package1pacakge2pacakge3,取决于{{ 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包)中的所有代码都可以与commonpacakge1package2兼容,前提是它可以设置版本约束,例如{ {1}},我们可以让版本永远不会达到package3,因此>=2.0.0 <3.0.0可以与3.0.0myApppackage1等兼容。

已更新:

使用dependency_override可以解决此问题,但是需要在pacakge2中设置package3,当更新公共包时,我们需要更新{{ 1}}同时说,如果我更新dependency_override中的通用软件包,我也需要更新myApp中的通用软件包,这不是我期望的。

解决方法

可能的解决方法是使用dependency_overrides

注意:它可能会破坏package1 / 2/3,因为它会强制使用某些版本的通用软件包,而忽略了它们的约束