错误:找不到存根。请确保已调用spring-cloud-contract:convert

时间:2019-11-10 15:11:56

标签: spring-cloud-contract

Spring Cloud Contract 2.1.3.RELEASEspring-boot 2.1.1.RELEASE结合使用,我在指南中添加了相关性和插件:

      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-contract-verifier</artifactId>
        <version>${spring-cloud-contract.version}</version>
        <scope>test</scope>
      </dependency>

      <plugin>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-contract-maven-plugin</artifactId>
        <version>${spring-cloud-contract.version}</version>
        <extensions>true</extensions>
      </plugin>

我还添加了以下内容:$rootDir/src/test/resources/contracts

Groovy文件:

package contracts

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    name("contract_updateNodeV4")
    request {
        method 'PUT'
        url '/v4/nodes'
        headers {
            header 'Content-Type': 'application/vnd.org.springframework.cloud.contract.verifier.twitter-places-analyzer.v1+json'
        }
        body(file("updateNodeV4_request.json"))
    }
    response {
        status OK()
        body(file("updateNodeV4_response.json"))
    }
}

以及相应的updateNodeV4_request.jsonupdateNodeV4_response.json(由于它们很大,因此省略了它们的内容)有效的JSON文件。

运行mvn clean install时,我希望按照指南创建生成的测试(现在失败)。

相反,我收到以下错误:

[ERROR] Failed to execute goal org.springframework.cloud:spring-cloud-contract-maven-plugin:1.0.0.RELEASE:generateStubs (default-generateStubs) on project xxx: Stubs could not be found: [C:\Users\xxx\git\xxx\target\stubs] .
[ERROR] Please make sure that spring-cloud-contract:convert was invoked

2 个答案:

答案 0 :(得分:0)

您的联系人很可能不在模块的src / test / resources / contracts下,而在根模块的文件夹下。如果是这种情况,您需要通过查看合同目录插件属性

来告诉插件

答案 1 :(得分:0)

我通过移动插件解决了它:

 <plugin>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-contract-maven-plugin</artifactId>
        <version>${spring-cloud-contract.version}</version>
        <extensions>true</extensions>
 </plugin>

从根pom.xml到我在其中创建合同的特定模块的pom.xml。现在它可以按预期工作。