2013-06-30 4 views
9

Недавно я перешел из Archiva в Sonatype Nexus.Nexus: Не удалось найти артефакт

Я пытаюсь использовать Jars из сторонних репозиториев, а Nexus не кэширует его в локальный репозиторий.

Я искал ответы в этом разделе и не мог ответить на вопрос.

Вот что я сделал ...

Я использую settings.xml:

<settings> 
    <mirrors> 
    <mirror> 
     <!--This sends everything else to /public --> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://THE_URL:8080/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 
    <servers> 
    <server> 
     <id>admin</id> 
     <username>user</username> 
     <password>password</password> 
    </server> 
    </servers> 
    <profiles> 
    <profile> 
     <id>nexus</id> 
     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 

     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 

     </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <!--make the profile active all the time --> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 

</settings> 

Я также созданный прокси-репозитории для всех 3-хранилищ партии, которые я использую, и ДОБАВЛЯТЬ ИХ НА НЕДВИЖУЮ ГОСУДАРСТВЕННУЮ ГРУППУ.

Далее я запустить команду:

mvn clean install 

и получил следующее сообщение об ошибке:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building shlang 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://THE_URL:8080/nexus/content/groups/public/com/shadow/shadow/1/shadow-1.pom 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 6.341s 
[INFO] Finished at: Sun Jun 30 11:59:42 IDT 2013 
[INFO] Final Memory: 6M/120M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project shlang: Could not resolve dependencies for project com.shadow:shlang:jar:1.0-SNAPSHOT: Failed to collect dependencies for [couchbase:couchbase-client:jar:1.1.5 (compile), com.google.code.gson:gson:pom:2.2.2 (compile), org.json:json:jar:20090211 (compile), net.sf.json-lib:json-lib:jar:jdk15:2.4 (compile), jline:jline:jar:2.10 (compile), commons-validator:commons-validator:jar:1.4.0 (compile), spy:spymemcached:jar:2.8.1 (compile), com.shadow:util:jar:1.0.1 (compile), com.shadow:monkey_schoolyard:jar:1.0.0 (compile)]: Failed to read artifact descriptor for com.shadow:util:jar:1.0.1: Could not find artifact com.shadow:shadow:pom:1 in nexus (http://THE_URL:8080/nexus/content/groups/public) -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

В результате в местном репо является то, что она не содержала какую-либо из 3-й партии банки должны.

Что я могу здесь пропустить?

+0

Вы настроили группу «общедоступных» репозиториев как зеркало «*». Это означает, что это URL-адрес для всех ваших артефактов Maven. Могут ли все артефакты, которые вы пытаетесь получить, получить из URL этой группы? Я предполагаю, что нет. –

+1

Вам, похоже, не хватало репозиторий для артефакта 'couchbase-client', который не находится в центре Maven. Таким образом, вам нужно изменить конфигурацию для вашего общего репозитория, что означает добавление репозитория, который содержит указанные выше зависимости. – khmarbaise

+0

Возможный дубликат [Maven Не удалось разрешить зависимости, артефакты не могут быть разрешены] (http://stackoverflow.com/questions/4650460/maven-could-not-resolve-dependencies-artifacts-could-not-be-resolved) – naXa

ответ

6

Скорее всего, ваш локальный репозиторий Maven имеет тот факт, что компонент не может быть найден в кэше. Вы можете заставить Maven проверить обновления версий моментальных снимков и наличие ранее не найденной версии с флагом -U.

Так бегите

mvn clean install -U 

Иногда, если вещь действительно странно это может помочь, чтобы полностью удалить соответствующую структуру папок в локальном хранилище. Таким образом, в вашем примере

rm -rf ~/.m2/repository/com/shadow/ 
2

Если решение Манфреда не работает для вас, то проблема будет с Nexus пытается решить этот артефакт.

Если вы используете браузер, вы можете проверить, что на самом деле делает Nexus, чтобы найти артефакт, который вы используете.

Append ? Опишите на адрес хранилища Nexus с указанием пути к артефакту.

E.g. URL Nexus Repository Public Хранилища: http://my.nexus.server.address:8081/nexus/content/groups/public/

Получение артефакт

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
</dependency> 

Путь выше артефакт будет: орг/SLF4J/SLF4J-апи/1.7.5/SLF4J-апи-1.7.5 ,баночка

Так полный URL, чтобы проверить

http://my.nexus.server.address:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar?describe

Этот процесс будет проходить через список репозиториев, настроенных под группы Public Хранилища в том порядке, в репозитории указано, что указывает, почему хранилище не удалось для обеспечения требуемого артефакта.

Большинство причин довольно понятны и могут быть проигнорированы.

Одной из причин, которые могут представлять интерес, является то, что ошибка по-прежнему кэшируется, поскольку не найдена для репозитория извлекается для репозитория.

Это указывает на то, что в какой-то момент Nexus попытался восстановить артефакт и не смог его найти.

Этот статус, похоже, кэшируется внутри Nexus, поэтому самый быстрый способ очистки кеша - перезагрузить Nexus.

Смежные вопросы