2017-09-01 12 views
1

私はスプリングクラウド契約の新人です。私のビルドを設定しようとすると、エラーが表示されます。 |ここでSpringクラウド契約で生成されたテストが失敗する

は私のプロジェクト構造

プロジェクト
です==>モジュール

私は

プロジェクトのビルドファイル

buildscript { 
dependencies { 
    classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.2.1" 
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.4.RELEASE") 
    classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:1.1.3.RELEASE" 
} 
apply from: "$projectDir/gradle/app/springcloud.gradle" //Gradle build file in module 
} 

モジュールのビルドファイルbuild.gradle私のプロジェクトでクラスパスのために、次の依存関係を持っている

apply plugin: 'groovy' 
apply plugin: 'spring-cloud-contract' 
apply plugin: 'org.springframework.boot' 
dependencies { 
//Spring cloud contract dependencies 
compile('org.springframework.boot:spring-boot-starter-actuator') 
compile('org.springframework.boot:spring-boot-starter-web') 
testCompile('org.springframework.boot:spring-boot-starter-test') 
testCompile('org.springframework.cloud:spring-cloud-starter-contract-verifier') 
testCompile "org.springframework.cloud:spring-cloud-starter-contract-stub-runner" 
testCompile "com.jayway.restassured:rest-assured:2.5.0" 
testCompile "com.jayway.restassured:spring-mock-mvc:2.5.0" 
} 
    //Spring cloud contract dependency management 
dependencyManagement { 
imports { 
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:Dalston.RELEASE" 
    } 
} 

私はグルーヴィーフィーを持っていますそれはポストリクエストとレスポンスを持っています。 gradle buildを実行すると、テストは自動生成されますが、私のビルドは感じています。

C:\Users\user\Projects\myProject\module\build\generated-test-sources\contracts\org\springframework\cloud\contract\verifier\tests\ContractVerifierTest.java:3: error: cannot find symbol 
import com.jayway.jsonpath.DocumentContext; 
        ^
symbol: class DocumentContext 
location: package com.jayway.jsonpath 

C:\Users\user\Projects\myProject\module\build\generated-test-sources\contracts\org\springframework\cloud\contract\verifier\tests\ContractVerifierTest.java:28: error: cannot find symbol 
     DocumentContext parsedJson = 
JsonPath.parse(response.getBody().asString()); 
     ^

私は何か間違っていますか?私が使用しているバージョンに不一致がありますか?

+0

おそらくバージョンが一致していない可能性があります。このレポを確認してください。https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer/build.gradleで春のクラウド契約のサンプルを確認し、プロジェクトを更新して同じように見てください –

+0

私は春の雲の契約を既存のプロジェクトに適用しています。プロジェクトが既に依存関係の中で春のブートを持っているように見えます。私は、矛盾を把握するために依存性ツリーを調べてみる。 – vkrams

+0

@MarcinGrzejszczak私のプロジェクトは 'springBootversion = 1.4.3.RELEASE'を使用していましたが、それを変更またはアップグレードすることはできません。 '' spring-cloud-contract-gradle-plugin''はこのバージョンと互換性がありますか?また、私は 'spring-cloud-dependencies:Camden.SR7'を使用しています。助けてくれてありがとう – vkrams

答えて

0

@Marcin入力いただきありがとうございます。これが私がこの問題を解決した方法です。

生成されたテストでビルドが失敗し、jayway jsonpathがエラーの位置で赤色で表示されません。インポート時にCtrl + Hover(マウス)を押すとcom.jayway.jsonpath:json-path:2.2.0が参照されますが、これは真ではありません。なぜなら私はIntellijに多くのモジュールをインポートしており、モジュールの1つが2.2.0をインポートし、intellijが外部ライブラリからそれを参照しているためです。

私はキャッシュintellijを無効にし、すべての不要なプロジェクトを閉じて、私が作業しているプロジェクトだけを新しいウィンドウ(フレッシュセッション)で再オープンしました。今すぐgradle buildと私は生成されたテストで同じエラーが発生しました。しかし、今回はCtrl + Hover(マウス)のインポート時に、私が期待しているcom.jayway.jsonpath:json-path:0.9.1を参照しています。

この問題を解決するために、私は以下のコマンドを使用して依存関係ツリーを調べ、grepを実行しました。 0.9.12.2.0を交換している理由のGradle

​​

私は、答えを見つけました。私はいくつかのプロジェクトの依存関係がそれを置き換えていることを理解しました。今度はこれを解決するために、jayway json-pathのモジュールビルドファイルを以下のように変更します。その後、私は build gradleコマンドを与えました。そして、エラーはなくなりました。

testCompile ('com.jayway.jsonpath:json-path:2.2.0') { 
      force = true 
} 

最後に、SpringCloudContractAssertionsという例外があります。

org.springframework.cloud.contract.verifier.assertion.SpringCloudContractAssertions.assertThat;

以下に示すようにだから私はDalstonCamdenリリースを置き換えます。今それはすべて正常に動作します。

dependencyManagement { 
    imports { 
     mavenBom "org.springframework.cloud:spring-cloud-dependencies:Dalston.RELEASE" 
    } 
} 
関連する問題