Dart 包:依赖冲突

     2023-02-23     265

关键词:

【中文标题】Dart 包:依赖冲突【英文标题】:Dart Packages: Dependency conflicts 【发布时间】:2020-04-20 06:13:16 【问题描述】:

在 Dart/Flutter 项目中,我有

dependencies:
  graphql: '^2.1.1-beta.5'
  flutter_bloc: ^3.0.0

作为依赖项。但是,graphql 依赖于 rxdart: ^0.22.0flutter_bloc 依赖于 rxdart: ^0.23.0,这给了我错误:

Because flutter_bloc >=3.0.0 depends on bloc ^3.0.0 which depends on rxdart ^0.23.0, flutter_bloc >=3.0.0 requires rxdart ^0.23.0.
And because graphql 2.1.1-beta.5 depends on rxdart ^0.22.0 and no versions of graphql match >2.1.1-beta.5 <3.0.0, flutter_bloc >=3.0.0 is incompatible with graphql ^2.1.1-beta.5.
So, because com.myapp depends on both graphql ^2.1.1-beta.5 and flutter_bloc ^3.0.0, version solving failed.

我的临时解决方法是将flutter_bloc 降级为^2.1.1,它使用rxdart ^0.23.0。但是如果我想使用最新最好的flutter_bloc,最好的解决方案是什么?

谢谢!

【问题讨论】:

查看:Flutter 2 upgrade - Flutter version solving failed error 【参考方案1】:

您可以在pubspec.yaml 中使用dependency overrides:

dependency_overrides:
  rx_dart: ^0.23.0

请注意,如果您这样做,依赖于您覆盖的另一个版本的依赖项的插件可能会中断。

【讨论】:

有没有办法为不同的依赖项使用不同版本的通用包? flutter_bloc: ^3.0.0 没有任何重大变化。它刚刚将 BlocProvider 的“builder”属性更改为“create”。而已 !我的建议是坚持使用旧版本的 flutter_bloc【参考方案2】:

免责声明:我不是答案的所有者。我只是从参考中发布答案:https://iiro.dev/resolving-dart-package-version-conflicts/

这对我有帮助。

假设你有这样的问题:

Because intl_translation 0.17.0 depends on petitparser ^1.1.3 and xml >=3.2.0 
depends on petitparser ^2.0.0, intl_translation 0.17.0 is incompatible with xml >=3.2.0.

So, because my_project depends on both xml ^3.2.0 and intl_translation 0.17.0, 
version solving failed.

pubspec 文件可能看起来像这样:

pubspec.yaml
dependencies:
  # ...
  xml: ^3.2.0
  intl_translation: ^0.17.0

解决方案: 解决此问题的最快方法是将两个冲突依赖项的版本设置为any

pubspec.yaml
dependencies:
  # ...
 xml: any # <- don't leave me like this - read further!

 intl_translation: any # <- don't leave me like this either!

^^这不是解决办法,还有一步!

输出可能如下所示:

Resolving dependencies... 
Got dependencies!

在构建项目后,您应该收紧依赖版本,以便像以前一样使用语义版本控制。 打开生成的pubspec.lock文件找到之前冲突的依赖项

pubspec.lock
# Generated by pub
# See https://www.dartlang.org/tools/pub/glossary#lockfile
packages:
  xml:
    # ...
    version: "3.0.1" # the version of "xml" package that worked fine
                     # with "intl_translation".
  intl_translation:
    # ...
    version: "0.17.0" # the version of "intl_translation" package
                      # that worked fine with "xml".

从该锁定文件中,我们可以看到 xml 包版本 3.0.1 和 intl_translation 包版本 0.17.0 配合得很好。 作为最后一步,在您的 pubspec 文件中将 any 替换为正确的版本:

pubspec.yaml
dependencies:
  # ...
  xml: ^3.0.1
  intl_translation: ^0.17.0

最后一次通过运行flutter packages get 重新获取您的依赖项,以验证这确实有效,然后您可以开始了

答案学分:Iiro Krankka

【讨论】:

Dart/Flutter 中的依赖关系图?

】Dart/Flutter中的依赖关系图?【英文标题】:DependencydiagraminDart/Flutter?【发布时间】:2019-12-0202:39:48【问题描述】:有没有办法查看我的颤振项目中的包是如何相互依赖的?在包下,我的意思是内部包:“lib”下的文件夹。此外... 查看详情

maven依赖jar包版本冲突解决方案

1、为何会产生依赖冲突 Maven中的传递性依赖机制,一方面简化了依赖声明,另一方面如果传递依赖有可能引发版本冲突。例如:有这样的依赖关系:a->b->c->x(1.0)、a->d->x(2.0),对于这样的冲突Maven给出的方案是:第... 查看详情

yum解决重复包,依赖冲突问题

https://blog.csdn.net/u012908433/article/details/80254343 查看详情

maven怎么处理引用的jar版本冲突

...的jar包名称。通常可以在eclipse中查找冲突的类有在哪些依赖包里面出现了。并确定实际要使用的是那个包,冲突的包有哪些。2.通过mvndependency:tree>tree.txt导出全部的依赖。3.在导出的依赖文件中,查找问题相关的jar。确定这些j... 查看详情

React / React-DOM 包依赖冲突

】React/React-DOM包依赖冲突【英文标题】:React/React-DOMpackagedependencyconflict【发布时间】:2021-02-2617:01:54【问题描述】:每次我尝试运行npmupdate时都会遇到此错误消息::npmERR!codeERESOLVEnpmERR!ERESOLVEunabletoresolvedependencytreenpmERR!npmERR!Whi... 查看详情

mbstring Ubuntu 14.04 依赖包冲突

】mbstringUbuntu14.04依赖包冲突【英文标题】:mbstringUbuntu14.04dependencypackageconflict【发布时间】:2020-01-2304:47:28【问题描述】:我正在尝试在我的Ubuntu14.04机器上安装PHPmbstring模块。我使用“sudoapt-get-finstallphp7.0-mbstring”来安装模块。... 查看详情

Anaconda 中的依赖项和包冲突?

】Anaconda中的依赖项和包冲突?【英文标题】:DependenciesandpackagesconflictsinAnaconda?【发布时间】:2018-08-2816:15:15【问题描述】:我在Windows10机器上使用Anaconda5.1和Python3.6。我遇到了很多问题;我尝试在我的conda环境中添加一些有用... 查看详情

intellijidea查找依赖关系,解决jar包冲突

maven工程,一个artifact的jar包可能不只一处被依赖;有时候依赖会出现相同的artifact却不同版本,相互存在冲突,这时就需要exclude某个版本。 试了在命令行工程目录下执行mvndependency:tree可以出来文本的依赖关系... 查看详情

如何删除maven中冲突的jar包

首先在自己的pom中,人为不可能引入两个版本不同的依赖。冲突最可能的就是你依赖的依赖可能产生了冲突。比如A依赖版本为2.0的C,B依赖版本为3.0的C。在你的pom中,你同时依赖了A和B,这时就会产生冲突。这时候你就要判断,... 查看详情

如何快速的解决maven依赖冲突

首先要说明Maven的依赖管理,具体的可以参考这边Maven学习——依赖管理这篇文章,maven在依赖冲管理中有一下几个原则。依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId,artifactId,version)构成。如果两个相同的依赖包,... 查看详情

maven依赖导致的jar包冲突解决方式

maven依赖导致的jar包冲突解决方式:mvc和context都依赖与sprng-core一个,依赖的是5.0.8版本,一个依赖的是4.2.4版本,那么真正加载的是5.0.8版本,如何换成4.2.4版本呢,有三种方式:1、依据声明优先原则调... 查看详情

maven依赖导致的jar包冲突解决方式

maven依赖导致的jar包冲突解决方式:mvc和context都依赖与sprng-core一个,依赖的是5.0.8版本,一个依赖的是4.2.4版本,那么真正加载的是5.0.8版本,如何换成4.2.4版本呢,有三种方式:1、依据声明优先原则调... 查看详情

maven怎么处理引用的jar版本冲突

...的jar包名称。通常可以在eclipse中查找冲突的类有在哪些依赖包里面出现了。并确定实际要使用的是那个包,冲突的包有哪些。2.通过mvndependency:tree>tree.txt导出全部的依赖。3.在导出的依赖文件中,查找问题相关的jar。确定这些j... 查看详情

maven依赖冲突以及解决方法(代码片段)

什么是依赖冲突依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突依赖冲突的原因依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,... 查看详情

mavenmavenjar包冲突的解决方式

1.概述视频参考:mavenjar包冲突的解决方式此处文章参考:Mvn:Maven的依赖管理依赖冲突解决思路 查看详情

终极方案:快速解决android项目依赖冲突

...:在此不多做介绍了,直接上解决方案1、配置显示冲突依赖详细信息2、编译,查看控制台详细输出1、project依赖排除示例2、远程依赖排除示例参考链接:如何excludeaar包中的某个jar包核心:①解压aar文件到tmpDir目录下②找到classe... 查看详情

Dart 包版本如何工作以及我应该如何对我的 Flutter 插件进行版本控制?

...何在我的Flutter应用程序中解析Dart包版本。说,我有一个依赖foo并声明一个这样的依赖:dependencies:foo:^1.2.3 查看详情

markdownmaven的项目中第三方的jar包依赖冲突问题(代码片段)

查看详情