maven настраивает другой репозиторий для определенной зависимости

У меня есть проект Maven2. Все зависимости, кроме одной, загружаются из общедоступного репозитория http://repo.maven.apache.org/maven2/ < / а>.

Но у меня есть 1 зависимость, которую мне нужно загрузить из внутреннего репозитория компании (мы используем Sonatype Nexus для хранения этой зависимости).

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

На данный момент у меня в pom.xml:

<url>http://maven.apache.org</url>

и

<repositories>
    <repository>
        <id>thirdparty</id>
        <url>http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty</url>
    </repository>
</repositories>

Итак, во время сборки я вижу много мусорных сообщений (в данном случае первая строка - это мусор):

Downloading: http://<my_nexus_server_ip>:8081/nexus/content/repositories/thirdparty/ant/ant/1.6.5/ant-1.6.5.pom
Downloading: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom
Downloaded: http://repo.maven.apache.org/maven2/ant/ant/1.6.5/ant-1.6.5.pom (861 B at 3.2 KB/sec)  

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

Не могли бы вы помочь реализовать такое поведение в Maven?

Заранее спасибо!


person zubactik    schedule 10.06.2013    source источник


Ответы (2)


Согласно этому ответу, невозможно установить конкретный репозиторий для некоторых заявленных зависимостей.

person Jmini    schedule 20.09.2015

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

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <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>

Вам необходимо настроить отдельный репозиторий в нексусе, как вы описали репо под названием ThirdParty, и добавить этот репозиторий в конфигурацию группы общедоступных репозиториев. Кроме того, вам необходимо загрузить одну зависимость в этот конкретный репозиторий. Кроме того, вам придется использовать репозиторий release и SNAPSHOT, что означает, что вам необходимо соответствующим образом настроить управление distributionManagement в главном файле pom вашей компании.

person khmarbaise    schedule 12.06.2013
comment
Мы используем Sonatype, как я описал выше. Мы используем его для управления нашими частными компонентами. Но у нашего проекта много внешних зависимостей, которые Maven скачивает из общедоступного репозитория. Мне нужно сказать, что Maven использует наш внутренний репозиторий только для одной зависимости и общедоступный для других. Проблема находится в журнале Maven. Я не хочу видеть много попыток Maven загрузить зависимости из неправильных репозиториев (наш пакет из общедоступного репо и внешние пакеты из нашего внутреннего репозитория). Я думаю об этом как о проблеме конфигурации Maven. - person zubactik; 13.06.2013
comment
Ах. Недоразумение на моем сайте. Обновлен ответ соответственно. - person khmarbaise; 13.06.2013