Как использовать опубликованную зависимость схемы OLP?

Этот вопрос является минимально воспроизводимым примером, основанным на учебном пособии Построить пакетный конвейер с архетипами Maven (Scala), хотя мы не можем использовать артефакт схемы в конвейере, который мы создаем для клиента.

У нас есть отдельный репозиторий, который мы хотим опубликовать (mvn deploy) схема из. Мы запустили установку, эквивалентную (заменить djv с вашей собственной уникальной строкой):

$ mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes \
                         -DarchetypeArtifactId=pom-root \
                         -DarchetypeVersion=1.1 \
                         -DgroupId=com.example.djv \
                         -DartifactId=nodecardinality \
                         -Dversion=1.0.0 \
                         -Dpackage=com.example.djv.nodecardinality
...
$ cd nodecardinality
$ mvn archetype:generate -DarchetypeGroupId=com.here.platform.schema \
                         -DarchetypeArtifactId=project_archetype \
                         -DarchetypeVersion=1.0.13 \
                         -DgroupId=com.example.djv.nodecardinality \
                         -DartifactId=schema \
                         -Dversion=1.0.0 \
                         -Dpackage=com.example.djv.nodecardinality.schema \
                         -DmajorVersion=1
...
$ cat << EOF > schema/proto/src/main/proto/com/example/djv/nodecardinality/schema/v1/schema.proto
syntax = "proto3";
> 
> package com.example.djv.nodecardinality.schema.v1;
> 
> message NodeCardinalityPartition {
>   repeated NodeCardinality node_cardinality = 1;
> }
> 
> message NodeCardinality {
>   string id = 1;
>   uint32 cardinality = 2;
> }
> EOF
$ # <edit schema/ds/pom.xml per the tutorial>
$ cd schema
$ mvn deploy

Основной симптом

На портале OLP я вижу мою новую схему в списке схем. Это объясняет, что я могу добавить зависимость от него следующим образом:

<dependency> 
  <groupId>com.example.djv.nodecardinality</groupId> 
  <artifactId>schema_v1_scala_2.11</artifactId> 
  <version>1.0.0</version> 
  <type>jar</type> 
</dependency>

Тем не менее, я не могу загрузить артефакт в processor проект:

$ cd processor
$ mvn install
...
[INFO] Building processor Direct1toN Batch Processor in Scala 1.0.0                                                                                                                                                
[INFO] --------------------------------[ jar ]---------------------------------                                                                                                                                    
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom                                             
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom                                                         
Downloading from central: https://repo.maven.apache.org/maven2/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom                                                                                     
[INFO] ------------------------------------------------------------------------                                                                                                                                    
[INFO] BUILD FAILURE                                                                                                                                                                                               
...                                                                                                                                                                 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project processor: Could not resolve dependencies for project com.example.nodecardinality:processor:jar:1.0.0: Failed to collect dependencies at com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0: Failed to read artifact descriptor for com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0: Could not transfer artifact com.example.djv:nodecardinality:pom:1.0.0 from/to HERE_PLATFORM_ARTIFACT (here+artifact-service://artifact-service): Cannot access here+artifact-service://artifact-service with type here using the available connector factories: BasicRepositoryConnectorFactory: Cannot access here+artifact-service://artifact-service with type here using the available layout factories: Maven2RepositoryLayoutFactory: Unsupported repository layout here -> [Help 1]
...

Мы видим эту неудачу только потому, что мы processor Проект строится на той же машине, что мы запускали mvn deploy для schema проект, поэтому некоторые файлы существуют в ~/.m2 кэш. Без этих файлов загрузка просто не удалась:

[INFO] --------------------------------[ jar ]---------------------------------                                                                                                                                    
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                   
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                               
Downloading from central: https://repo.maven.apache.org/maven2/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                                                           
[WARNING] The POM for com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0 is missing, no dependency information available                                                                               
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.jar                   
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.jar                               
Downloading from central: https://repo.maven.apache.org/maven2/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.jar                                                           
[INFO] ------------------------------------------------------------------------                                                                                                                                    
[INFO] BUILD FAILURE                                                                                                                                                                                               
...                                                                                                                                                                   
[INFO] ------------------------------------------------------------------------                                                                                                                                    
[ERROR] Failed to execute goal on project processor: Could not resolve dependencies for project com.example.nodecardinality:processor:jar:1.0.0: Could not find artifact com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0 in HERE_PLATFORM_REPO (https://repo.platform.here.com/artifactory/open-location-platform/) -> [Help 1] 

Вторичный симптом

Как мы видели выше, работает mvn deploy из местного schema каталог не помещает все необходимое для создания в локальной ~/.m2 хранилище (то есть, чтобы построить processor суб-проект). Поместить необходимые файлы в локальный ~/.m2 хранилище нам нужно запустить mvn install из родительского каталога (nodecardinality) хранилища схемы.

Это позволяет нам, по крайней мере, развиваться локально (временно).

Частичное разрешение

Следуйте инструкциям в разделе Служба артефактов на странице Управление зависимостями · OLP SDK. Хотя сборка идет дальше, она все равно не может вытащить зависимость:

[INFO] --------------------------------[ jar ]---------------------------------                                                                                                                                    
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                   
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                               
Downloading from HERE_PLATFORM_ARTIFACT: here+artifact-service://artifact-service/com.example.djv.nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom                                        
Downloaded from HERE_PLATFORM_ARTIFACT: here+artifact-service://artifact-service/com.example.djv.nodecardinality/schema_v1_scala_2.11/1.0.0/schema_v1_scala_2.11-1.0.0.pom (3.4 kB at 1.6 kB/s)                    
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/schema_v1/1.0.0/schema_v1-1.0.0.pom
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/schema_v1/1.0.0/schema_v1-1.0.0.pom
Downloading from HERE_PLATFORM_ARTIFACT: here+artifact-service://artifact-service/com.example.djv.nodecardinality/schema_v1/1.0.0/schema_v1-1.0.0.pom
Downloaded from HERE_PLATFORM_ARTIFACT: here+artifact-service://artifact-service/com.example.djv.nodecardinality/schema_v1/1.0.0/schema_v1-1.0.0.pom (8.0 kB at 6.3 kB/s)
Downloading from HERE_PLATFORM_REPO: https://repo.platform.here.com/artifactory/open-location-platform/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom
Downloading from OLP Public repo: https://artifactory.in.here.com/artifactory/here-olp-sit/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom
Downloading from HERE_PLATFORM_ARTIFACT: here+artifact-service://artifact-service/com.example.djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom
Downloading from central: https://repo.maven.apache.org/maven2/com/example/djv/nodecardinality/1.0.0/nodecardinality-1.0.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE                  
...
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project processor: Could not resolve dependencies for project com.example.nodecardinality:processor:jar:1.0.0: Failed to collect dependencies at com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0: Failed to read artifact descriptor for com.example.djv.nodecardinality:schema_v1_scala_2.11:jar:1.0.0: Could not find artifact com.example.djv:nodecardinality:pom:1.0.0 in HERE_PLATFORM_REPO (https://repo.platform.here.com/artifactory/open-location-platform/) -> [Help 1]

2 ответа

Схемы OLP развертываются в HERE Artifact Service. Услуга требует специальной авторизации. Чтобы загрузить привязку схемы или java/scala, вы должны включить Maven Wagon в свой проект. Пожалуйста, обратитесь к разделу "Служба артефактов" в https://developer.here.com/olp/documentation/sdk-developer-guide/dev_guide/topics/dependency-management.html

Короче говоря:

Добавить версию вагона в собственность:

 <artifact.wagon.version>1.6.1</artifact.wagon.version>

Добавьте репозиторий-заполнитель в список репозиториев:

  <repositories>
    <repository>
      <id>HERE_PLATFORM_ARTIFACT</id>
    <layout>default</layout>
    <url>here+artifact-service://artifact-service</url> 
  </repository>
  </repositories>

Поместите ссылку на плагин в разделе сборки:

 <extensions>
  <extension>
    <groupId>com.here.platform.artifact</groupId>
    <artifactId>artifact-wagon</artifactId>
    <version>${artifact.wagon.version}</version>
  </extension>
</extensions>

Обратите внимание, что вам нужен действительный файл 'credentials.properties', сохраненный в ~/.here каталог. Как получить его, пожалуйста, прочитайте https://developer.here.com/olp/documentation/sdk-developer-guide/dev_guide/topics/get-credentials.html

С наилучшими пожеланиями, Дима

Проблема заключается в развертывании с родительским проектом Maven. Смотрите последнее предложение последней ошибки в вопросе:

Could not find artifact com.example.djv:nodecardinality:pom:1.0.0 in HERE_PLATFORM_REPO

com.example.djv:nodecardinality:pom:1.0.0 POM никогда не загружался, когда мы бежали mvn deploy из schema каталог. Вы не можете бежать mvn deploy с верхнего уровня nodecardinality каталог.

Простое решение - удалить указатель родительского проекта из pom.xml в schema каталог перед запуском mvn deploy:

  <!-- <parent>
    <artifactId>nodecardinality</artifactId>
    <groupId>com.example.djv</groupId>
    <version>1.0.0</version>
  </parent> -->
Другие вопросы по тегам