我通常使用Java来制作IT项目,Maven作为依赖管理(DM(。根据要求,我必须在我从事的一些PHP项目中工作的公司中实现DM。其中一个要求是他们不想使用任何类型的框架,如symfony,laravel,zend等。
我正在研究一些PHP的DM,发现最好的选择是Composer。我正在从事多层项目,如下所示:
- 核心
- 服务业
- 客户
- 网站
当我开始制作这种结构时,我发现的第一个问题是 Composer 不检索递归依赖项,因此,我将 Satis 实现为包存储库。我使用Satis而不是Packagist是因为项目是私有项目,这将SVN实现为版本控制系统,并且Packagist使用GitHub来检索项目的源代码。
在解释了我所做的所有实现之后,我发现在开发多层结构时会遇到一些障碍。
- 例如,如果我修改核心项目,为了反映这些更改,我必须提交到 SVN 中,然后刷新 Satis 存储库,最后更新我正在使用核心的项目。出于这个原因,我试图找到某种方法来将依赖项指向我的文件系统以避免每次提交,并且仅在功能、错误、修复完成后提交。
我的满意.json看起来像
{
"name": "My Repository",
"homepage": "https://www.myrepository.com/",
"repositories": [
{ "type": "vcs", "url": "file:///C:/core/branches/core/" },
{ "type": "vcs", "url": "file:///C:/services/branches/services/" }
],
"require-all": true
}
感谢您的帮助。
Satis 不接受从中抓取内容的文件 URL,但您可以在根项目的composer.json
中直接指向 SVN 存储库(因为,正如您已经发现的那样,Composer 不会递归解析这些存储库(。
您不必直接依赖此存储库中提供的包,只需提及它即可使其可用于更新内容。
仅通过指定文件路径即可支持本地引用。
我不知道它在Windows上是如何工作的,但是在基于unix/linux的系统上,以下内容可以工作:
{
"repositories": [
{ "type": "vcs", "url": "/path/to/git/repo" }
]
}
引用:
- http://tech.vg.no/2014/11/25/using-local-packages-as-composer-dependencies/
- https://groups.google.com/forum/#!topic/composer-dev/P2ikrm_DFmc