Composer php 读取外部composer.lock文件

Composer php 读取外部composer.lock文件,composer-php,dependency-management,Composer Php,Dependency Management,我有一个问题,作曲家和外国的依赖关系。具体来说,我正在帮助开发nextcloud服务器的插件(在那里它被称为应用程序)。主nextcloud服务器(主组件)和我们的应用程序都使用composer来管理PHP依赖项 问题是我们正在使用部分主服务器包来访问某些功能。所以我们对代码库有一种依赖性。通常,依赖项是库,由composer安装。在我们的例子中,我们有一个更复杂的安装,因为应用程序必须放在主服务器代码的特定子文件夹中 现在很明显,特别是在测试期间,我们需要自动加载主服务器的类。这对大多数课程都

我有一个问题,作曲家和外国的依赖关系。具体来说,我正在帮助开发nextcloud服务器的插件(在那里它被称为应用程序)。主nextcloud服务器(主组件)和我们的应用程序都使用composer来管理PHP依赖项

问题是我们正在使用部分主服务器包来访问某些功能。所以我们对代码库有一种依赖性。通常,依赖项是库,由composer安装。在我们的例子中,我们有一个更复杂的安装,因为应用程序必须放在主服务器代码的特定子文件夹中

现在很明显,特别是在测试期间,我们需要自动加载主服务器的类。这对大多数课程都是有效的。如果服务器的依赖项与我们的依赖项发生冲突,就会出现问题。让我们用一个例子来说明:

相关的文件结构是

server
  - 3rdparty
    - autoload.php
    - composer.json
    - composer.lock
    - vendor/...
  - apps
    - cookbook
      - composer.json
      - src/...
      - tests/...
      - vendor/...
当然,涉及的文件更多,但这是一种最小的。当查看
测试中的测试时,他们需要来自主服务器代码库的类。有一些引导代码,但它作为自动加载程序激活了
server/3rdparty/autoload.php
。因此,
/server/3rdparty/…
中的代码用作依赖项

现在在当前状态下,
/server/3rdparty/composer.lock
中的依赖项固定为
nikic/php parser 4.3.0
。好的,到目前为止。 如果我们在
/server/apps/cookbook/
中启用
phpunit/phpunit
依赖项,它需要例如
nikic/php解析器4.10.2
。这是安装在本地文件夹,一切似乎都很好。但是一旦测试开始,很明显使用了错误的版本(4.3.0)

现在,我手动将
composer.json
中的版本修改为4.3.0。这会降低其他一些包的级别,但测试会顺利运行。然而,我怀疑这是一个好的解决方案,因为现在必须手动维护
composer.json
(与使用composer进行依赖项跟踪的想法相反)


如果composer在计算更新选项时可以选择读取额外的外部
composer.lock
文件,那么我能想到的最简单/唯一的解决方案就是。我该怎么做呢?

我看不出作曲家中有任何东西可以直接解决您的问题。也许你可以将你的应用程序转换成一个软件包,然后安装到一个新的服务器上。