0

Spring Cloud Contract 1.0.2.RELEASE を使用しており、ローカルの Maven リポジトリでスタックを公開できます。

コンシューマー側では、次のようにテストを構成します。

@AutoConfigureStubRunner(ids = {"com.myGroup:myArtifactt:+:8080"}, workOffline = true)

「+」は、ローカル リポジトリで利用可能な最新バージョンを取得することを意味するはずですが、依存関係を解決できません。ただし、「+」の代わりに正確なバージョンを指定すると、機能します。

何が欠けていますか?

4

1 に答える 1

0

デバッグに進むと、ある時点で、このメソッドがある org.eclipse.aether.internal.impl.SimpleLocalRepositoryManager クラス (私にとっては aether-impl-1.0.2.v20150114.jar にあります) に到達することがわかります。 :

public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )

ローカル リポジトリのバージョンを解決するために、ローカル Maven リポジトリのアーティファクト ディレクトリの下にあるmaven-metadata-local.xmlファイルを見つけようとします (以下の else ブロック)。

    RemoteRepository remote = request.getRepository();

    if ( remote != null )
    {
        path = getPathForRemoteMetadata( metadata, remote, context );
    }
    else
    {
        path = getPathForLocalMetadata( metadata );
    }

    File file = new File( getRepository().getBasedir(), path );

ファイルが存在しない場合はログに記録されないため、リポジトリ マネージャーが期待する場所に maven-metadata-local.xml があることを確認してください。これは、ローカルにスタブをインストールしたときに作成されるはずです。レポ。

リモートのもの、つまり maven-metadata.xml しかない場合があります。その場合、jar の解決は失敗します。

于 2017-01-17T06:03:59.520 に答える