Flutterにおいて、内製パッケージなど、pub.devに無いパッケージを依存関係に追加する場合、gitのURLでソースを指定する Git packages や、ローカルのパスでソースを指定する Path packages などの方法があります。
今回、社内で内製したパッケージをGit packagesとして依存関係に追加しようとしたとき、以下のようなエラーが発生しました。
Because every version of package1 from git depends on package2 from hosted
and project1 depends on package2 from git, package1 from git is forbidden.
So, because project1 depends on package1 from git, version solving failed.
当該エラーは、同一のgitリポジトリ内に複数のパッケージがあり、その中のあるパッケージがもう一方のパッケージに依存している場合に発生します。
今回の例では、同一gitリポジトリ内のpackage1とpackage2が依存関係にあります。
pubspec.yaml
dependencies:
package1:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package1
package2:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package2
この場合、dependency_overrides内にも指定するよう修正することでエラーが解消されます。
pubspec.yaml
dependencies:
package1:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package1
package2:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package2
dependency_overrides:
package1:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package1
package2:
git:
url: ssh://hoge@hoge.com/my_packages.git
path: packages/package2