Снимок не загружен Maven - PullRequest
       42

Снимок не загружен Maven

4 голосов
/ 25 августа 2009

Я пытаюсь настроить Maven с репозиторием, расположенным в нашей локальной сети, и я уже настроил репозиторий для моментальных снимков и один для выпусков (оба apache archiva).

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

[INFO] ------------------------------------------------------------------------  
[ERROR] BUILD ERROR  
[INFO] ------------------------------------------------------------------------  
[INFO] Failed to resolve artifact.  

Missing:  
----------  
1) my.company:product2:jar.lastUpdated:0.0.2-SNAPSHOT

  Try downloading the file manually from the project website.  
[...]

 Path to dependency:   
        1) my.company:product1:war:0.0.1-SNAPSHOT  
        2) my.company:product2:jar.lastUpdated:0.0.2-SNAPSHOT  

 ----------
1 required artifact is missing.

for artifact: 
 my.company:product1:war:0.0.1-SNAPSHOT

from the specified remote repositories:  
  my-internal (http://my-repo:8080/archiva/repository/internal),  
  central (http://repo1.maven.org/maven2),
  my-snapshots (http://my-repo:8080/archiva/repository/snapshots),

Пакет доступен в репозитории моментальных снимков, сеть подключена, вход в систему работает нормально.

Мой pom.xml выглядит так:

 [...]
<repositories>
  <repository>
  <id>my-snapshots</id>
  <name>my name Snapshots Repository</name>
  <url>http://my-snapshots:8080/archiva/repository/snapshots</url>
  <snapshots>
<enabled/>
<updatePolicy/>
<checksumPolicy/>
</snapshots>
</repository>
<repository>
  <id>my-internal</id>
  <name>my name internal Repository</name>
  <url>http://my-repo:8080/archiva/repository/internal</url>
</repository>
  </repositories>
 [...]

<dependency>
    <groupId>my.company</groupId>
    <artifactId>frontend-api</artifactId>
    <version>0.0.2-SNAPSHOT</version>
    <type>jar.lastUpdated</type>
</dependency>
 [...]

Я также проверил файл maven-metadata.xml, который был загружен из репозитория моментальных снимков:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
 <groupId>my.company</groupId>
 <artifactId>product2</artifactId>
 <version>0.0.2-SNAPSHOT</version>
 <versioning>
    <snapshot>
      <buildNumber>7</buildNumber>
     <timestamp>20090824.130209</timestamp>
  </snapshot>
   <lastUpdated>20090824130209</lastUpdated>
 </versioning>
</metadata>

Показывает правильную дату и метку времени (пакет, содержащий эту метку времени, присутствует в репо).

Я что-то упускаю из-за настройки репозитория или концепции SNAPSHOT? У кого-нибудь была такая же проблема? Или кто-нибудь знает о какой-то подробной документации о SNAPSHOT и репозиториях?

Ответы [ 3 ]

3 голосов
/ 25 августа 2009

Как выглядит объявление зависимости для моего приложения? Я ожидаю, что это будет выглядеть так:

<dependency>
  <groupId>my.company</groupId>
  <artifactId>product2</artifactId>
  <version>0.0.2-SNAPSHOT</version>
</dependency>

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

Если это не так, не могли бы вы поделиться разделом POM, пожалуйста?

Для получения дополнительной информации о версиях Maven SNAPSHOT см. Книга Maven :

Версии Maven могут содержать строковый литерал для обозначения того, что проект в настоящее время находится в активной разработке. Если версия содержит строку «SNAPSHOT», Maven расширит этот токен до значения даты и времени, преобразованного в UTC (Всемирное координированное время), при установке или выпуске этого компонента. Например, если ваш проект имеет версию «1.0-SNAPSHOT» и вы развернули артефакты этого проекта в репозитории Maven, Maven расширит эту версию до «1.0-20080207-230803-1», если вы развернете выпуск на 11 : 8 вечера 7 февраля 2008 UTC. Другими словами, при развертывании моментального снимка вы не выпускаете программный компонент; вы выпускаете снимок компонента в определенное время.

Поэтому свойство lastUpdated обычно не требуется.

0 голосов
/ 27 августа 2009

А как насчет вашего файла settings.xml?

если ваш pom xml имеет следующее:

<repositories>
   <repository>
   <id>my-snapshots</id>
   <name>my name Snapshots Repository</name>
   <url>http://my-snapshots:8080/archiva/repository/snapshots</url>
   <snapshots>
       <enabled/>
       <updatePolicy/>
       <checksumPolicy/>
   </snapshots>
</repository>

тогда файл setting.xml должен выглядеть примерно так:

<server>
    <id>my-snapshots</id>
    <username>user</username>
    <password>pass</password>
    <privateKey>${user.home}/.ssh/id_dsa</privateKey>
    <passphrase>some_passphrase</passphrase>
    <filePermissions>664</filePermissions>
    <directoryPermissions>775</directoryPermissions>
    <configuration></configuration>
  </server>

1) Имя пользователя и пароль хранилища должны быть такими же, как указано выше

2) Тег id в настройках и pom должен быть одинаковым:

<id>my-snapshots</id>
0 голосов
/ 25 августа 2009

Запустите mvn с флагом -e для более подробных сообщений об ошибках.

...