Как можно заблокировать определенные артефакты Maven в Nexus?

Мы используем Maven через локальный репозиторий Nexus. К сожалению, при запросе новых версий мы получаем несколько ложных срабатываний:

commons-collections:commons-collections ............ 3.2.1 -> 20040616
org.hibernate:hibernate-entitymanager ..... 4.1.9.Final -> 4.3.0.Beta1

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

Я попытался выполнить маршрутизацию, но либо я ошибся, либо он не может блокировать определенные версии, только полные артефакты со всеми его версиями. Я видел закупки в документации, но это кажется очень сложным, и я не рискнул.

1 ответ

Решение

Вы можете настроить versions-maven-plugin в POM вашего проекта (или где-нибудь в компании) использовать файл правил, сообщающий плагину, какие версии игнорировать.

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>versions-maven-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <!-- some location that makes sense for your company/project -->
    <rulesUri>http://host.company.com/maven-config/maven-version2-rules.xml</rulesUri>
  </configuration>
</plugin>

Пример файла правил выглядит следующим образом. Моя игнорирует версию плагина commons-logging "99.0-не-существует".

<ruleset xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0 
     http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd">
  <rules>
    <rule groupId="commons-logging" artifactId="commons-logging">
      <ignoreVersions>
        <ignoreVersion>99.0-does-not-exist</ignoreVersion>
      </ignoreVersions>
    </rule>
  </rules>
</ruleset>

Вы можете добавить конфигурацию, чтобы игнорировать другие версии глобально, а не для каждого артефакта, как я сделал здесь, и регулярные выражения также могут использоваться. Более подробная информация доступна в документации к плагину.

Другие вопросы по тегам