Подтвердить что ты не робот

Как вручную отключить/черный список репозитория Maven

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

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

<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, и я бы не хотел ее менять.

4b9b3361

Ответ 1

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

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

Почему он выполняет поиск в репозитории 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 fixed -->
    <scope>compile</scope>
  </dependency>
  ....
<dependencies>

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

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

Нет проблем.

Ответ 2

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

    <repository>
        <id>repo1.maven</id>
        <url>http://repo1.maven.org</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

Ответ 3

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

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

Ответ 4

Решение от Фреда отлично поработало для меня. Я должен был сопоставить идентификатор репозитория с файлом pom pending transitive dependency, чтобы заставить это решение работать.