Composer php 读取外部composer.lock文件
我有一个问题,作曲家和外国的依赖关系。具体来说,我正在帮助开发nextcloud服务器的插件(在那里它被称为应用程序)。主nextcloud服务器(主组件)和我们的应用程序都使用composer来管理PHP依赖项 问题是我们正在使用部分主服务器包来访问某些功能。所以我们对代码库有一种依赖性。通常,依赖项是库,由composer安装。在我们的例子中,我们有一个更复杂的安装,因为应用程序必须放在主服务器代码的特定子文件夹中 现在很明显,特别是在测试期间,我们需要自动加载主服务器的类。这对大多数课程都是有效的。如果服务器的依赖项与我们的依赖项发生冲突,就会出现问题。让我们用一个例子来说明: 相关的文件结构是Composer php 读取外部composer.lock文件,composer-php,dependency-management,Composer Php,Dependency Management,我有一个问题,作曲家和外国的依赖关系。具体来说,我正在帮助开发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
文件,那么我能想到的最简单/唯一的解决方案就是。我该怎么做呢?我看不出作曲家中有任何东西可以直接解决您的问题。也许你可以将你的应用程序转换成一个软件包,然后安装到一个新的服务器上。