Как вручную отключить / черный список репозитория Maven - PullRequest
20 голосов
/ 18 ноября 2009

В моем базовом проекте я использую зависимость JasperReports, которая имеет несуществующее объявление репозитория в своем pom. Когда я запускаю каждую запятую Maven, в этом репозитории Jasper есть зависимость, ищущая коллекцию общин, поэтому мне нужно подождать тайм-аут.
Это мой базовый проект, и он используется как зависимость в других моих проектах, поэтому мне снова нужно подождать тайм-аут.
Есть ли способ переместить этот репозиторий в черный список или переопределить эти настройки?

Примечания:
1. Почему поиск в репозитории Jasper, возможно, из-за диапазонов

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>[2.1,)</version>
    <scope>compile</scope>
</dependency>

2.Моя идея решить эту проблему - изменить jasper pom и использовать прокси-репозиторий, но я ищу другой вариант.
3.Я пользуюсь версией jasperreports 1.3.3 и не хочу ее менять.

Ответы [ 4 ]

16 голосов
/ 01 июня 2012

Не будет ли следующее указание maven игнорировать определенный репозиторий:

    <repository>
        <id>repo1.maven</id>
        <url>http://repo1.maven.org</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
12 голосов
/ 06 июня 2010

Вы можете переопределить репо, используя объявление mirrorOf в файле settings.xml. Хотя это не то, для чего он обычно предназначен, установка, например, mirrorOf в репозиториях jasper repoid и указание его на Central (repo1.maven.org) фактически заставит его исчезнуть.

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

8 голосов
/ 18 ноября 2009

Есть ли способ переместить этот репозиторий в черный список или переопределить эти настройки?

Насколько мне известно, это невозможно.

Почему он ищет в репозитории Jasper, возможно, из-за диапазонов

Да, я думаю, что диапазоны "ответственны" за это поведение. Без диапазонов Maven не пришлось бы проверять удаленные репозитории на наличие более новой версии, чем та, которая доступна в вашем локальном репо.

Моя идея решить эту проблему - изменить jasper pom и использовать прокси-репозиторий, но я ищу другой вариант.

Исправление jasper pom и использование прокси-репозитория, конечно, было бы идеальным решением, но это не всегда возможно. Хотя, возможно, есть обходной путь. Вы пытались исключить транзитивные зависимости jasperreports, которые имеют диапазоны, и вместо этого предоставить их себе (с фиксированной версией) в свой pom. Примерно так:

<dependencies>
  <dependency>
    <groupId>jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>1.3.3</version>
    <!-- Remove Transitive dependencies drawn by Jasper Report that we don't want -->
    <exclusions>
      <exclusion>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
      </exclusion>
      ...
    </exclusions>
  </dependency>
  <dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>2.1</version><!-- Or whatever version, as long as it's fixed -->
    <scope>compile</scope>
  </dependency>
  ....
<dependencies>

Таким образом, Maven не должен проверять несуществующий репозиторий, и этого следует избегать ожидания времени ожидания. Я бы попробовал.

Я использую версию jasperreports 1.3.3, и я не хотел бы ее менять.

Нет проблем.

0 голосов
/ 16 декабря 2014

Решение от Фреда отлично сработало для меня. Мне нужно было сопоставить идентификатор хранилища из pom-файла нарушающей транзитивной зависимости, чтобы это решение работало.

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