Контракт Spring Cloud: не удалось разрешить последнюю версию заглушек в локальном репо

Я использую Spring Cloud Contract 1.0.2.RELEASE, и я могу публиковать материалы в моем локальном репозитории Maven.

На стороне потребителя я затем настраиваю свой тест с помощью:

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

«+» должен означать, что я получу последнюю версию, доступную в моем локальном репо, но она не может разрешить зависимость. Однако, если я укажу точную версию вместо «+», то это сработает.

Что мне не хватает?


person Vincent F    schedule 17.01.2017    source источник


Ответы (1)


Если вы войдете в отладку, вы увидите, что в какой-то момент вы дойдете до класса org.eclipse.aether.internal.impl.SimpleLocalRepositoryManager (для меня находится в aether-impl-1.0.2.v20150114.jar), в котором есть этот метод :

public LocalMetadataResult find( RepositorySystemSession session, LocalMetadataRequest request )

Чтобы разрешить версию в вашем локальном репозитории, он попытается найти файл maven-metadata-local.xml в каталоге артефактов в вашем локальном репозитории Maven (блок 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 не удастся.

person Vincent F    schedule 17.01.2017