Пользовательский удаленный репозиторий просматривается, даже если jar компонента зависимости создается в локальном репозитории maven во время его сборки

У меня есть зависимость и зависимый компонент в моем проекте Maven.

Я успешно создал банку проекта зависимости, используя clean install -

[INFO] Installing /Users/sandeepan.nath/Desktop/codebase/path/to/component1/target/project-component-1-1.0.1-SNAPSHOT.jar to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/project-component-1-1.0.1-SNAPSHOT.jar
[DEBUG] Writing tracking file /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/_remote.repositories
[INFO] Installing /Users/sandeepan.nath/Desktop/codebase/path/to/project-component-1/pom.xml to /Users/sandeepan.nath/.m2/repository/com/path/to/project-component-1/1.0.1-SNAPSHOT/project-component-1-1.0.1-SNAPSHOT.pom
[DEBUG] Writing tracking file /Users/sandeepan.nath/.m2/repository/path/to-project-component-1/1.0.1-SNAPSHOT/_remote.repositories
[DEBUG] Installing com.project:project-component-1:1.0.1-SNAPSHOT/maven-metadata.xml to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/maven-metadata-local.xml
[DEBUG] Installing com.project:project-component-1/maven-metadata.xml to /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/maven-metadata-local.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------

Я также подтвердил, что репозиторий присутствует в пути - /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/

Ниже приводится разрешение созданных файлов -

SandeepanNath:1.0.1-SNAPSHOT sandeepan.nath$ ls -l
total 312
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     264 Jul 26 21:24 _remote.repositories
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users  107794 Jul 26 21:24 project-component-1-1.0.1-SNAPSHOT.jar
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     428 Jul 26 19:19 project-component-1-1.0.1-SNAPSHOT.jar.lastUpdated
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users    6733 Jul 26 21:01 project-component-1-1.0.1-SNAPSHOT.pom
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     428 Jul 26 19:19 project-component-1-1.0.1-SNAPSHOT.pom.lastUpdated
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     739 Jul 26 21:24 maven-metadata-local.xml
-rw-r--r--  1 sandeepan.nath  IDC\Domain Users     342 Jul 26 21:26 resolver-status.properties

Примечание. Я не уверен, почему jar отсутствует в целевом каталоге компонента. Как я понимаю, jar компонента зависимости будет первым поиском в целевом каталоге проекта, затем в локальном репозитории maven и, наконец, в удаленном репозитории.

Теперь, когда я пытаюсь запустить clean install на зависимом компоненте, я получаю следующую ошибку:

Зависимый проект пытается ссылаться на .m2 или / целевую папку проекта зависимости?

[ERROR] Failed to execute goal on project project-component-2: Could not resolve dependencies for project project-component-2:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at project-component-1:jar:1.0.1-SNAPSHOT: Failed to read artifact descriptor for project-component-1:jar:1.0.1-SNAPSHOT: Could not find artifact project:path:pom:1.0.1-SNAPSHOT in nexus (https://project-repository.com/repository/maven-public/) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project project-component-2: Could not resolve dependencies for project project-component-2:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at project-component-1:jar:1.0.1-SNAPSHOT
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:269)

Этот URL-адрес репозитория определен в maven settings.xml как -

<localRepository>/Users/sandeepan.nath/.m2/repository</localRepository>
<servers>

    <server>
        <id>repo-id</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-2</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-3</id>
        <username>cred</username>
        <password>cred</password>
    </server>
<server>
        <id>repo-id-4</id>
        <username>cred</username>
        <password>cred</password>
    </server>
    <server>
        <id>repo-id-5</id>
        <username>cred</username>
        <password>cred</password>
    </server>
</servers>


<mirrors>
       <mirror>
      <id>repo</id>
      <mirrorOf>repo-id-5</mirrorOf>
      <url>https://project-repository.com/repository/maven-snapshots</url>
    </mirror>
    <mirror>
      <id>repo-id-4</id>
      <mirrorOf>nexus-snapshots-prepaid</mirrorOf>
      <url>https://project-repository.com/repository/maven-snapshots</url>
    </mirror>
    <mirror>
      <id>repo-id-1</id>
      <mirrorOf>*</mirrorOf>
      <url>https://project-repository.com/repository/maven-public/</url>
    </mirror>
</mirrors>

Примечание. Не обращайте внимания, если я сделал какие-либо ошибки при замене фактических имен / путей проекта.

Обновить

Maven версии 3.3.9. Java версии 1.8.

Обновление 2

Вот какой-то раздел (может быть актуален) из pom компонента зависимости -

<parent>
        <groupId>com.project</groupId>
        <artifactId>project-base</artifactId>
        <version>1.0.1-SNAPSHOT</version>
        <relativePath>../../</relativePath>
    </parent>

    <artifactId>project-component-1</artifactId>
    <packaging>jar</packaging>

    <name>project-component-1</name>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.project.dependencies</groupId>
                <artifactId>dependency-of-project-component-1</artifactId>
                <version>1.0-SNAPSHOT</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

Обновление 3

Я пробовал ранее с конфигурацией обновления снимков -

введите описание изображения здесь

Я также пробовал с mvn clean install -U, но результаты такие же.

Обновление 4

Согласно этому комментарию -

Я предполагаю, что у вас проблема в вашем локальном репозитории. Удалите каталог /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/, а затем снова создайте первый артефакт.

Пробовал и это, но все равно ошибка. После удаления каталога 1.0.1-SNAPSHOT и построения первого артефакта этот каталог снова появился, только с файлом .jar. Думаю, раньше тоже был файл .lastUpdated. Однако ошибка при попытке построить 2-й артефакт остается прежней.


person Sandeepan Nath    schedule 26.07.2019    source источник


Ответы (1)


Вам нужно вызвать clean install с -U, потому что в вашем локальном репозитории есть lastUpdated файлы. Эти кешируют, что артефакт не существует.

person J Fabian Meier    schedule 26.07.2019
comment
Я уже делал clean install с установленным флажком «Обновить снимки». Не уверен, что это делало то, что нужно. Во всяком случае, я тоже пробовал с -U, но все равно получаю ту же ошибку. - person Sandeepan Nath; 27.07.2019
comment
-U должен ли пытаться загрузить из удаленного репозитория? Я не уверен, будут ли эти jar-файлы компонентов проекта присутствовать в удаленном репозитории. Я ожидаю, что они будут созданы в целевой папке моего проекта, но они создаются в локальном репозитории. - person Sandeepan Nath; 27.07.2019
comment
Тогда я предполагаю, что у вас проблема в вашем локальном репозитории. Удалите каталог /Users/sandeepan.nath/.m2/repository/path/to/project-component-1/1.0.1-SNAPSHOT/, а затем снова создайте первый артефакт. - person J Fabian Meier; 27.07.2019
comment
Пробовал и это, но все равно ошибка. После удаления каталога 1.0.1-SNAPSHOT и построения первого артефакта этот каталог снова появился, только с файлом .jar. Думаю, раньше тоже был файл .lastUpdated. Однако ошибка при попытке построить 2-й артефакт остается прежней. - person Sandeepan Nath; 27.07.2019
comment
Получили ли вы снова те же самые последние обновленные файлы после попытки создания второго артефакта? - person J Fabian Meier; 27.07.2019
comment
Нет, для второго артефакта jar-файлы еще не создаются, так как сборка завершается ошибкой. Однако теперь я вижу целевые каталоги, созданные как для первого, так и для второго. Итак, я думаю, очистка последних обновленных сработала. - person Sandeepan Nath; 27.07.2019
comment
Одно замечание: Maven никогда больше не разрешает целевой каталог другого проекта. - person J Fabian Meier; 27.07.2019