Не хочу, чтобы мои собственные артефакты в Nexus были публичными

В моем Nexus мой собственный проект находится в размещенном репозитории "Снимки". Я должен назначить этот репозиторий "публичным репозиториям"; в противном случае я не могу скомпилировать свой собственный проект с помощью mvn. Это будет сообщение об ошибке:

[ERROR] Failed to execute goal on project bword: Could not resolve dependencies for project com.bbword.core:bword:war:0.0.1-SNAPSHOT: Could not find artifact com.bbword.core:tts-app:jar:0.0.1-SNAPSHOT in nexus (http://www.bbword.com:8081/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.

Конечно, я не хочу, чтобы мой собственный проект находился в публичных репозиториях в Интернете. В какой конфигурации я могу ошибаться?

Это мой settings.xml:

<?xml version="1.0"?>
<settings>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://www.bbword.com:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <servers>
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>bbword</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>

Отредактировано: прикреплена картинка для лучшей иллюстрации.
введите описание изображения здесь

Мой проект в разделе "Снимки".

Отредактировано: новый прилагается для деталей.

введите описание изображения здесь

2 ответа

У вас есть разные места для управления тем, что является общедоступным из Интернета:

  • Вы можете сказать Nexus, что хранилище является закрытым, но Maven не сможет его использовать.
  • Вы можете сказать Nexus, что хранилище является общедоступным, и скрыть свой собственный Nexus из Интернета.

Когда вы настраиваете свой собственный локальный нексус, общедоступным является то, что нексус показывает на своем собственном сервере. Это не означает, что он автоматически загружается на Maven Central или любой другой общедоступный сервер Nexus.

Но если это ваш собственный нексус, у вас нет причин делать доступ к самому серверу из Интернета, и брандмауэр (или маршрутизатор вашего провайдера) просто не должен позволять завершать внешний вызов здесь. Этого будет достаточно для вашего собственного проекта, чтобы не лежать в публичных репозиториях в Интернете.

Существует как минимум 2 способа сделать это. Оба требуют некоторого доступа администратора.

Аппликативный способ: вы создаете новый размещенный репозиторий и защищаете его учетными данными. Вот пост, в котором описано, как:( http://minibiti.blogspot.ca/2012/03/private-repositories-in-sonatype-nexus.html). может даже отключить пользовательский интерфейс для этого хранилища.

Сетевой способ: вам нужно иметь доступ к своему нексусу, но изолировать его от Интернета. Конечно, если вы сделаете это, не используйте прокси для центрального хранилища и не используйте его в качестве зеркала.

Также в посте о первом решении предлагается, чтобы вы указали свой пароль в виде обычного текста. Мне это не нравится Посмотрите на этот пост для шифрования Maven https://maven.apache.org/guides/mini/guide-encryption.html

РЕДАКТИРОВАТЬ: Здесь, как добавить учетные данные в settings.xml

<repository>
                    <id>ID</id>
                    <name>name</name>
                    <url>URL</url>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>

<server>
            <id>ID</id>
            <username>USER</username>
            <password>PASSWORD</password>
        </server>
Другие вопросы по тегам