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)


arrow_upward
1
arrow_downward

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

person Jmini    schedule 20.09.2015

arrow_upward
-1
arrow_downward

Вам необходимо настроить группу общедоступного репозитория в 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