A具有以下文件夹,每个文件夹包含一个项目:
PackageA
PackageB
PackageC
程序包A取决于PackageB女巫也取决于PackageC,每一个都是一个Git仓库。
这是PackageA composer.json:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
}
]
}
这是PackageB composer.json:
{
"name": "packageb/packageb",
"require": {
"packagec/packagec": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageC"
}
]
}
这是PackageC composer.json:
{
"name": "packagec/packagec"
}
这是我composer update
在PackageA文件夹上尝试得到的结果:
您的要求无法解决为一组可安装的软件包。
问题1-packageb / packageb [dev-master]可以满足packageb / packageb dev-master的安装请求。-packageb / packageb dev-master需要packagec / packagec dev-master->找不到匹配的软件包。
可能的原因: -在包名称的错字-根据您的最低稳定性设定看到包不能在一个稳定的,足以版本https://getcomposer.org/doc/04-schema.md#minimum-stability为更多细节。
但是,有一个PackageC上指定的依赖PackageB
我做错了什么?
私人依赖的主要诀窍是,项目composer
的发现在repositories
不跨越整个树共享。因此,如果您有VCSproject
要求的package A
,则project
需要在自己composer.json
的repositories
部分中包含正确的条目。这是很明显的,但是现在想像一下说package A
需要package B
来自不同的私有存储库。所以,你加什么需要package B
composer.json
的repositories
,但同时该包的即单元测试工作正常,你仍然会试图在您该组件时失败project
,同样的方式,你描述。都是因为这些依赖源。不太明显的解决方案是将所有私有存储库包含在您project
的composer.json
-即使不是直接需要或不使用它。换句话说,您project
的composer.json
包含的所有软件包都必须包含VCS存储库的条目,package A
以及package B
(依此类推)。在您的情况下,您需要使其看起来像这样:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
},
{
"type": "vcs",
"url": "../PackageC"
}
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句