【问题标题】:Why does Spring Cloud Contract stub runner have local and remote attributes?为什么 Spring Cloud Contract stub runner 有本地和远程属性?
【发布时间】:2019-08-26 02:20:54
【问题描述】:

Spring Cloud Contract 文档说 “从在线存储库下载存根时使用 REMOTE stubsMode 并使用 LOCAL 进行离线工作”。

为什么 Spring Cloud Contract stub runner 需要本地和远程属性?

我希望它应该尊重正常的 Maven 生命周期...如果我在合同模块上执行 mvn clean install 它应该在本地发布。如果我在那里进行 mvn clean deploy,它应该发布到我的遥控器。测试验证器也一样...如果我的本地存储库中有二进制文件的副本,请使用它。否则从远程拉它

所以我不明白为什么我们必须在存根运行器中包含本地和远程。

这似乎也很危险,因为当您打算在构建服务器上将其更改为远程时,您可能会不小心使用本地代码签入

【问题讨论】:

    标签: spring-cloud-contract


    【解决方案1】:

    为什么 Spring Cloud Contract stub runner 需要本地和远程属性?

    我们已在您引用的文档中对其进行了描述。当您离线工作时,您希望自动从本地 .m2 中选择存根。否则,您想从其他位置选择它。

    我希望它应该尊重正常的 Maven 生命周期...如果我在合同模块上执行 mvn clean install 它应该在本地发布。如果我在那里进行 mvn clean deploy,它应该发布到我的遥控器。测试验证器也一样...如果我的本地存储库中有二进制文件的副本,请使用它。否则从远程拉它

    您将存根运行程序与验证程序混合在一起。当您在生产者端时,您使用的是 Spring Cloud Contract 验证器,它完全遵循 maven 生命周期。那是因为我们生成了一个存根 jar,并将它附加到标准的 maven 流中。使用 Stub Runner,它与您的 maven 流程完全无关。

    这似乎也很危险,因为当您打算在构建服务器上将其更改为远程时,您可能会不小心使用本地代码签入

    如果您使用本地签入代码,那么您确实可能会误报。这就是为什么你应该注意你正在做的事情。当您在消费者方面并执行./mvnw clean install/deploy 时,Stub Runner 只需遵循您的测试设置。如果在测试设置中你搞砸了配置,那么 Stub Runner 就无能为力了。

    【讨论】:

    • 对不起,我不清楚。我的意思是,在生产者方面(或维护合同的任何地方) mvn install 应该发布到本地 .m2,而 mvn deploy 应该发布到您的远程仓库。 (如 settings.xml 中所定义)此外,存根运行程序默认情况下应从本地拉取。如果它不存在,那么让它要求 Maven 从远程拉取。这与典型的 Maven 工作流一致,并且需要较少的配置,并且您在提交时不必记住更改任何内容
    • 这不是它的工作方式。有时在消费者方面你想提醒回购的位置。也不是每个人都在使用 maven 或 gradle 甚至 jvm。
    • @Vinny Gray 如果您希望它始终从本地下载,只需在 Maven pom 中的存根中添加显式依赖项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2022-01-13
    • 2019-06-23
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多