Composer不会安装私有软件包依赖项

时间:2018-07-16 06:44:35

标签: symfony composer-php

首先,有一些相关文章并不完全适合我的问题。

还有更多

我有一个Symfony项目,其中包含一些私有软件包。 这些被vcs引用:

"repositories": [
    {
        "type": "vcs",
        "url": "git@aaaaa.git"
    },
    {
        "type": "vcs",
        "url": "git@xxxxx.git"
    },
    {
        "type": "vcs",
        "url": "git@yyyyy.git"
    }
],

这像预期的那样工作。但是,私有包yyyy引用了另一个私有包(我们称其为sub-yyyy),在包composer.json文件中vcs类型也引用了该私有包。

如果我运行composer安装,它将失败并显示以下消息:

  

问题1       -yyyy-> yyyy的安装请求]。       -yyyy需要subyyyy ^ 1.0.0->找不到匹配的软件包。

     

潜在原因:

     
      
  • 包裹名称中的错字
  •   
  • 根据最小稳定性设置,该软件包没有足够稳定的版本,请参见   https://getcomposer.org/doc/04-schema.md#minimum-stability了解更多   详细信息。
  •   
  • 这是一个私人包裹,您忘了添加自定义存储库来找到它
  •   

由v1.0.0标记的私有软件包(sub-yyyy)ist,如果安装在主项目的composer.json文件中,则可以安装。

主项目的composer.json(必须切除):

{
    "name": "main/project",
    "license": "proprietary",
    "type": "project",
    "prefer-stable": true,
    "repositories": [
        {
            "type": "vcs",
            "url": "git@aaaaa.git"
        },
        {
            "type": "vcs",
            "url": "git@xxxxx.git"
        },
        {
            "type": "vcs",
            "url": "git@yyyyy.git"
        }
    ],
}

yyyy软件包的composer.json:

{
  "name": "yyyy",
  "type": "symfony-bundle",

  "require": {
    "sub-yyyy": "^1.0.0"
  },

  "repositories": [
    {
      "type": "vcs",
      "url": "git@sub-yyyy.git"
    }
  ],
  "minimum-stability": "dev",
}

在安装引用yyyy的{​​{1}}软件包时是否有解决此问题的想法?

1 个答案:

答案 0 :(得分:3)

您必须在主项目中将存储库条目添加到软件包sub-yyyy中,因为依赖项不能传递。

来自docs

  

存储库不是递归解析的。您只能将它们添加到   您的主要composer.json。依赖项的存储库声明   composer.jsons被忽略。

您的composer.json主项目应该看起来像

{
    "name": "main/project",
    "license": "proprietary",
    "type": "project",
    "prefer-stable": true,
    "repositories": [
        {
            "type": "vcs",
            "url": "git@aaaaa.git"
        },
        {
            "type": "vcs",
            "url": "git@xxxxx.git"
        },
        {
            "type": "vcs",
            "url": "git@yyyyy.git"
        },
        {
            "type": "vcs",
            "url": "git@sub-yyyy.git"
        }
    ]
}