首先,我知道这个设置是愚蠢的,但这就是我们坚持使用♂️
我们使用公司框架构建网站。该网站包含框架直接访问的一些类。这意味着我们有一个循环依赖。直到现在这都不是问题。
这些是我们composer.json
的简洁版本:
框架:
框架只定义了其他一些
{
"name": "company/framework",
"type": "library",
"require": {
...
}
}
网站:
{
"name": "company/website",
"require": {
"company/framework": "^4.3",
...
}
}
非常简单,framework
是website
的依赖关系。
现在,我正在尝试使用framework
的静态分析设置CI服务器。如上所述,framework
需要website
中的某些文件才能成功进行静态分析。
新的 company / framework / composer.json 文件如下所示:
{
"name": "company/framework",
"type": "library",
"require": {
"company/website": "^4.3",
...
}
}
在测试带标记的framework
版本时,此功能正常。每当我们进入开发分支时,Composer都会失败,因为website
需要一个稳定的^4.3
版本的框架,但这是一个开发分支。
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
将测试框架所需的类提取到单独的包中。
Framework需要该包。
网站要求包裹。并且需要Framework(也需要该包)。
Voila,您将循环依赖转换为线性图。
为此方法添加语义版本控制,您将永远不会遇到严重问题 - 或者很快发现它们。