Проблема с хранилищем снимков - PullRequest
0 голосов
/ 26 февраля 2012

Мы установили Archiva с двумя репозиториями, установленными по умолчанию.

Вот мои settings.xml :

<server>
   <id>mycompany-release</id>
   <username>admin</username>
   <password>******</password>
</server>
<server>
   <id>mycompany-snapshots</id>
   <username>admin</username>
   <password>******</password> 
</server>

<mirror>
   <id>mycompany-release</id>
   <url>http://X.X.X.X:8080/archiva/repository/internal/</url>
   <mirrorOf>external:*</mirrorOf>
</mirror>
<mirror>
   <id>mycompany-snapshots</id>
   <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
   <mirrorOf>apache.snapshots</mirrorOf>
</mirror>

<profile>
    <id>repo</id>
    <repositories>
        <repository>
           <id>mycompany-release</id>
           <url>http://X.X.X.X:8080/archiva/repository/internal/</url>
           <releases>
                  <enabled>true</enabled>
           </releases>
           <snapshots>
                  <enabled>false</enabled>
           </snapshots>
    </repository>
    <repository>
           <id>mycompany-snapshots</id>
           <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
           <releases>
                  <enabled>false</enabled>
           </releases>
           <snapshots>
                  <enabled>true</enabled>
           </snapshots>
    </repository>
   </repositories>      
</profile>

<activeProfiles>
    <activeProfile>repo</activeProfile>
</activeProfiles>

У меня есть родительский проект, который я использую, чтобы установить общую конфигурацию для всех проектов. Версия этого родительского проекта - 1-SNAPSHOT. Таким образом, во всех других проектах родительский раздел указывает на этот родительский проект с версией 1-SNAPSHOT (без элемента относительного пути). Если я разверну свой родительский проект в хранилище archiva, он будет там. Если я пытаюсь запустить какую-либо команду в другом проекте, как mvn clean, она работает, так как родительский проект был установлен во время развертывания. Но если я вручную удаляю родительский проект из своего локального репозитория и пытаюсь выполнить ту же команду, Maven возвращает сообщение об ошибке:

Неразрешимый родительский POM: не удалось найти артефакт com.mycompany: родитель: pom: 1-SNAPSHOT в выпуске mycompany (http://X.X.X.X:8080/archiva/repository/internal/) и parent.relativePath указывает на неправильный локальный POM

Кажется, что родительский проект ищется в репозитории релизов, в то время как я ожидал, что он был найден в репозитории моментальных снимков.

Спасибо за вашу помощь

РЕДАКТИРОВАТЬ: Вот одна часть дочернего POM:

<parent>
    <groupId>com.mycompany</groupId>
    <artifactId>Parent</artifactId>
    <version>1-SNAPSHOT</version>
</parent>

<groupId>com.mycompany</groupId>
<artifactId>child</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

Если я удаляю родительский раздел и запускаю команду mvn help :ffective-pom, я получаю (отображаются только репозитории):

<repositories>
    <repository>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>mycompany-release</id>
      <url>http://X.X.X.X:8080/archiva/repository/internal/</url>
    </repository>
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>mycompany-snapshots</id>
      <url>http://X.X.X.X:8080/archiva/repository/snapshots/</url>
    </repository>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>

ПРИМЕЧАНИЕ: , если я заменяю родительскую версию на 1 (вместо 1-SNAPSHOT), она работает.

1 Ответ

1 голос
/ 27 февраля 2012

Я нашел в чем проблема.Проблемная строка в settings.xml выглядит следующим образом:

<mirrorOf>external:*</mirrorOf>

Действительно, это заставило Maven рассматривать репозиторий mycompany-release как зеркало mycompany-snapshots хранилище.Но этот репозиторий не отражает снимки.Я заменил эту строку следующим образом:

<mirrorOf>central</mirrorOf>

Теперь хранилище mycompany-release отражает только центральное хранилище Maven, а не mycompany-snapshots , поэтомуищет артефакты снимков в хранилище mycompany-snapshots .

Спасибо Эндрю за вашу помощь!У меня сейчас не было возможности отобразить полный журнал.

...