Maven не может получить снимки сборки с репозитория
-
28-09-2019 - |
Вопрос
Наш внутренний репозиторий (Artifactory) теперь содержит как устойчивые сборки, так и версии наших внутренних библиотек Smainshot.
Для стабильных сборку никогда не было проблемой загрузки чего-либо из репозитория.
Однако, когда я добавляю A -Snapshot, Maven утверждает, что не может найти зависимость, даже если она определенно в репозитории.
Если я построю и развернул зависимость локально (то есть в мою местное репо) все работает нормально.
В основном это работает:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.0</version>
</dependency>
И это не:
<dependency>
<groupId>com.example</groupId>
<artifactId>ourlibrary</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
Несмотря на то, что оба версиях были построены так же, и развернуты (насколько я могу сказать) правильно в хранилище.
Ошибка:
Missing:
----------
1) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=com.example -DartifactId=ourlibrary -Dversion=1.0.1-SNAPSHOT, -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) com.example:product:war:2.0.0-SNAPSHOT
2) com.example:ourlibrary:jar:1.0.1-SNAPSHOT,
Пока это звучит похоже на это Вопрос, резолюция прибыла на там, не распространяется на мой случай.
Любые идеи в этот вопрос были бы очень оценены.
Редактировать
Работает с -x (как предложил Джон В.), показал следующее:
[DEBUG] Skipping disabled repository central
[DEBUG] ourlibrary: using locally installed snapshot
[DEBUG] Skipping disabled repository central
[DEBUG] Using mirror: http://repo.example.com/repo (id: repo.example.com)
[DEBUG] Artifact not found - using stub model: Unable to download the artifact from any repository
com.example:ourlibrary:pom:1.0.1-SNAPSHOT
from the specified remote repositories:
repo.example.com (http://repo.example.com/repo)
[DEBUG] Using defaults for missing POM com.example:ourlibrary:pom:1.0.1-SNAPSHOT:compile
[DEBUG] com.example:ourlibrary:jar:1.0.1-SNAPSHOT:compile (selected for compile)
Решение
Две мысли приходят на ум:
Структура пути в вашем внутреннем репозитории для вашего артефакта неверна. Я предлагаю запустить команду Maven с параметром -x. Это будет отображать попытку Maven при загрузке файлов. Получите линию, которая имеет ваш репозиторий как URL и попробуйте искать его самостоятельно.
Путь должен выглядеть как
/com/example/ourlibrary/1.0.1/ourlibrary-1.0.1-snapshot.jar.
- Вы не включали свой репозиторий в качестве хранилища в вашем POM.xml
Другие советы
Обычно у вас есть отдельные моментальные снимки URL из релизов URL. Просто разные пути в том же репозитории, но перечислены в виде отдельных репозиториев в POM. Один для снимков должен быть включен снимки, а один для выпусков имеет снимки отключено:
<repositories>
<repository>
<id>central</id>
<url>
http://<releases-url>
</url>
**<snapshots>
<enabled>false</enabled>
</snapshots>**
</repository>
<repository>
<id>snapshots</id>
<url>
http://<snapshots-url>
</url>
<snapshots>
**<enabled>true</enabled>**
<!-- never, daily, interval:X (where X is in minutes) or always -->
<!--<updatePolicy>daily</updatePolicy> -->
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>