当前位置: 首页 > 知识库问答 >
问题:

作曲家自定义存储库包不能拉依赖

呼延臻
2023-03-14

遇到作曲家的问题。我有一个主要的项目,我正在和一些我建立的小库一起工作,我想更容易地在我的项目之间共享。它们还没有准备好发布,所以我不想把它们添加到打包器中,但是当我需要1而需要另一个时,它会出错,除非我在我的主程序上也发布了那个自定义存储库composer.json

另外,第三级需求不能解决打包库

Your requirements could not be resolved to an installable set of packages.
 Problem 1
   - ethereal/simpleCache dev-master requires predis/predis ^1.1@dev -> no matching package found.
   - ethereal/simpleCache dev-master requires predis/predis ^1.1@dev -> no matching package found.
    - Installation request for ethereal/simplecache dev-master -> satisfiable by ethereal/simpleCache[dev-master].

Main Project composer.json:

{
"name": "ethereal/SimpleTable",
"type": "project",
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/mathus13/SimpleConfig.git"
    }
],
"require": {
    "php": ">=5.3.9",
    "doctrine/dbal": "^2.6@dev",
    "ethereal/SimpleConfig": "dev-master"
},
"require-dev": {
    "phpunit/phpunit": "~4.8"
},
"autoload": {
    "psr-4": {
        "Ethereal\\": "lib"
    }
}
}

配置库:当在SimpleTable中运行作曲家更新时,除非SimpleTable中明确要求,否则不会包含简单缓存

{
"name": "ethereal/SimpleConfig",
"type": "project",
"version": "0.0.1",
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/mathus13/SimpleCache.git"
    }
],
"require": {
    "php": ">=5.3.9",
    "ethereal/SimpleCache": "dev-master"
},
"require-dev": {
    "phpunit/phpunit": "~4.8"
},
"autoload": {
    "psr-4": {
        "Ethereal\\": "lib"
    }
}
}

缓存库:在SimpleTable中运行作曲家更新时,无法解析predis。

{
"name": "ethereal/simpleCache",
"type": "project",
"version": "0.0.1",
"require": {
    "predis/predis": "^1.1@dev",
    "php": ">=5.3.9"
},
"require-dev": {
    "phpunit/phpunit": "~4.8"
},
"autoload": {
    "psr-4": {
        "Ethereal\\": "lib"
    }
}
}

共有1个答案

郭德惠
2023-03-14

ethereal/SimpleTable依赖于dev稳定性中的ethereal/SimpleConfig,这依赖于dev稳定性中的ethereal/SimpleCache,这依赖于dev稳定性中的predis/predis(1.1版本尚未发布)。

主包中包含的包不能定义任何稳定性,唯一允许的稳定性是主包中的稳定性。默认情况下,这是“稳定的”。

您通过依赖SimpleConfig的“dev master”实现了一个例外,但这不是继承的。

您有多种解决方案:

  1. 标记您的软件。标签html" target="_blank">声明它比“开发”更稳定,通常在生产中只使用标签软件是个好主意。
  2. 包括主包中需要的所有自己的包,即使它们不是直接使用的。这将为它们添加一般稳定性的异常,并允许Composer解决任何子依赖项。
  3. 您可以添加最小稳定性:dev到主composer.json,但这也将允许从分支安装所有其他包。然而,使用分支是一件非常糟糕的事情,因为您不能轻易地回到更新之前工作的版本——分支指针只向前移动。只有标签将永远指向同一个软件。
  4. 添加首选稳定: true是解决3为稳定版本中已经可用的包引入的问题的某种解决方案。但是,您仍然存在无法返回到您自己的包的早期版本的问题,因为您正在使用分支。

如果您仍在开发这些软件包,根据分支可能看起来是必要的。然而,一个好的包可以独立开发和测试,除了接口定义(将用于模拟所有内容)外,几乎没有任何外来代码存在,因此将所有代码放在一个带有签出分支的repo的混合物中通常是编写不完全分离的代码的邀请。

如果这些包中的任何一个已经完成了(我会说“足够好”),那么标记它并依赖于该版本而不是分支。如果您发现bug或希望添加新功能,则始终可以发布新版本。

 类似资料:
  • 在我的项目中有几个实体具有相同的属性(对于示例'name'),所以,有可能创建一个存储库,其中使用自定义的select(实体)?因此,我从JpaRepository扩展了我的存储库,我扩展了MyCustomJpaRepository,MyCustomJpaRepository也扩展了JpaRepository,使其能够从JpaRepository授予基本功能? TKS

  • 我想把公司artifactory添加到Zeppelin spark解释器中,并尝试使用这份文档。 因此,我们的artifactory的URL看起来像 访问不限于特定的用户,工件可以从我的机器和运行Zepplin的机器下载(我用curl尝试了这一点)。 设置解释器“spark.spark”的属性时出错:找不到项目com.feedvisor.dataplatform:data-platform-sch

  • 我正在使用PackageGist和firegento上的包(Magento扩展)。 在我的文件中,我有: 当Composer被下载并预先配置为使用packagist.org时,将从加载。 我想强制从加载。 我试图补充: 但之后,composer将不再在PackageGist中搜索:这不是我想要的(因为PackageGist中也有有用的包…) 我想我可以用 然后呢 以我喜欢的顺序添加存储库(我不确定

  • 我使用的是Spring数据JPA1.10.11。释放 我有一个基础存储库,所有其他存储库都会扩展它。这部分有效。 我还想为一些要扩展的存储库声明一个自定义接口。所以我声明了一个接口和一个“Impl”类: 然后,我创建一个现有的工作存储库来扩展这个新接口: 注意:此存储库在扩展TestRepository之前工作,但是在如上扩展之后,应用程序上下文将无法以错误开始: 配置如下所示: 我觉得我一直在遵

  • 我按照作曲家的说明,成功安装了作曲家。我想使用Tumblr全新的php api客户端。 我的文件夹结构: : : 使用也非常有效。但是当执行找不到该类。 致命错误:类'Tumblr\API\Client'未在第9行的[...]/htdocs/Tumblr/myfile.php中找到

  • 这类似于在无法使用两个带有Spring Boot/Spring数据Neo4j的Neo4j实例中讨论的内容,但我没有两个数据库。我从git repo下载了spring data neo4j示例java应用程序,希望执行动态查询,而不是通过存储库接口执行静态查询。 我面临一个空事务管理器的问题。 这是我的界面: 以下是我的自定义回购建议: 以下是我的配置: 因为我只有一个TransactionMana