Nexus не будет обслуживать SNAPSHOT из общедоступной группы по умолчанию - PullRequest
15 голосов
/ 08 марта 2011

По какой-то причине я не могу заставить Nexus обслуживать мои артефакты SNAPSHOT через общедоступную группу по умолчанию. Я прочитал соответствующую часть руководства по Nexus и поищу в Google, но ничего, что я делаю, похоже, не работает.

Я реализовал материал в разделе 4.2. ( Настройка Maven для использования одной группы Nexus ) руководства, поэтому мой файл settings.xml выглядит следующим образом:

<settings>

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://my-server/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <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>

</settings>

Все работало нормально, пока я не начал собирать вещи на чистой машине (то есть, на которой я не создавал ни один из проектов SNAPSHOT), и она не будет загружать необходимые зависимости SNAPSHOT. Maven дает мне следующее:

[INFO] Scanning for projects...
[INFO]       
[INFO] ------------------------------------------------------------------------
[INFO] Building MyCo Actions Base Classes 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://my-sever/nexus/content/groups/public/com/myco/testing/1.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://my-sever/nexus/content/groups/public/com/myco/testing/1.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://my-sever/nexus/content/groups/public/com/myco/testing/1.0.0-SNAPSHOT/testing-1.0.0-SNAPSHOT.pom
[WARNING] The POM for com.myco:testing:jar:1.0.0-SNAPSHOT is missing, no dependency information available
Downloading: http://my-sever/nexus/content/groups/public/com/myco/testing/1.0.0-SNAPSHOT/testing-1.0.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.023s
[INFO] Finished at: Tue Mar 08 15:55:23 GMT 2011
[INFO] Final Memory: 99M/480M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project actions-base: Could not resolve dependencies for project com.myco:actions-base:jar:1.0.0-SNAPSHOT: Could not find artifact com.myco:testing:jar:1.0.0-SNAPSHOT in nexus (http://my-sever/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

Проблема в том, что test-1.0.0-SNAPSHOT.jar не существует, но существует test-1.0.0-20110301.182820-1.jar. Как мне заставить Нексуса правильно разобраться со СНАРШОТОМ и подать мне мой JAR ...?

Ответы [ 4 ]

9 голосов
/ 01 июля 2011

Я закончил тем, что все заработало, удалив локальные выпуски и репозитории моментальных снимков из общедоступной группы и сделав зеркало, только отражая общедоступную группу, а не все.Так что мой файл settings.xml в итоге содержал:

  <profiles>
    <profile>
      <id>nexus</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>maven-releases</id>
          <url>http://myhost.com/nexus/content/repositories/releases</url>
          <layout>default</layout>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>maven-snapshots</id>
          <url>http://myhost.com/nexus/content/repositories/snapshots</url>
          <layout>default</layout>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>        
        <repository>
          <id>madeUp</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>madeUp</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>madeUp</mirrorOf>
      <url>http://myhost.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
7 голосов
/ 22 апреля 2015

Та же проблема для меня, пока я настраиваю nexus для работы в качестве зеркала. После добавления всех репозиториев (выпусков и снимков) в группу Public Repository вы можете найти все снимки, просмотрев соответствующий URL-адрес:

Configure nexus Browser public group

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

<settings>

<mirrors>
    <mirror>
        <id>nexus-mirror</id>
        <name>Nexus Mirror</name>
        <url>http://my-server/nexus/content/groups/public/</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

<profiles>
    <profile>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>nexus-public</id>
                <name>Nexus Public Repository</name>
                <url>http://my-server/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
    </profile>
</profiles>

</settings>

Даже установка updatePolicy -Tag на все зеркало не создает никаких проблем. Поскольку maven достаточно умен, чтобы обновлять снимки только в каждой сборке, но не в выпусках.

1 голос
/ 17 марта 2011

Я тоже попробовал, и это не удалось. Здесь есть второе описание проблемы здесь . Возможно, публичный репозиторий Nexus мешает вещам.

В итоге я добавил второй репозиторий в файл settings.xml, указывающий на наш локальный репозиторий снимков напрямую.

<repository>
   <id>ummsSnaps</id>
      <url>https://team/nexus/content/repositories/snapshots</url>
      <snapshots>
         <enabled>true</enabled>
      </snapshots>
</repository>

И это сработало.

0 голосов
/ 01 июля 2011

Убедитесь, что ваш репозиторий снимков добавлен в вашу публичную группу.Похоже, что у вас правильно настроен файл settings.xml, поэтому должно быть так, что / public не содержит репозитория снимков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...