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

Отключить центральный репозиторий Maven

Политика моей компании хмурится, что артефакты загружаются автоматически (они должны быть одобрены), поэтому для использования Maven мне нужно отключить доступ к центральному репозиторию Maven.

Другими словами, я не хочу, чтобы Maven пытался загружать любые из центра.

Я знаю, как настроить локальный репозиторий (в сети или нет), моя идея использует "благословенную" машину для обновления локального репозитория.

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

UPDATE Наконец я понял, как это сделать. В maven home, в каталоге conf находится глобальный settings.xml. Вы можете установить зеркало на central, который указывает на некоторый внутренний сервер или просто переопределить его определение.

4b9b3361

Ответ 1

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

Конкретный ответ на ваш вопрос - вторая часть моего ответа:-)

Настройка менеджера репозитория

Я бы рекомендовал настроить локальный менеджер хранилища Maven. Хорошие варианты:

Все они способны выступать в качестве кэширующего прокси для внешних доступных центральных банок Maven.

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

Локальные настройки Maven

Обновите файл настроек расположенный в следующем каталоге:

$HOME/.m2/settings.xml

Укажите, что все центральные запросы должны быть перенаправлены в локальный репозиторий Maven:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <mirrors>
    <mirror>
      <id>central-proxy</id>
      <name>Local proxy of central repo</name>
      <url>http://<hostname>/central</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

Ответ 2

Я нашел настройку страницы разрешения артефактов полезной. В нем говорится следующее о "mirror any" -setup.

Не используйте "mirror any" самостоятельно, как свое единственное правило разрешения. Используйте его для обеспечения того, чтобы любое разрешение артефактов производилось строго через Artifactory. Конфигурация проксирования "зеркало любой" работает для определенных репозиториев. Он будет заменять, но не скрывать, встроенные центральные и хранилища снимков, если только они не будут отменены пользователем. Он определяет крупнозернистое правило проксирования, которое не различает выпуски и моментальные снимки, и полагается на определенные репозитории для фильтрации этого разрешения.

Super POM of Maven определяет центральный репозиторий. Вот как вы можете переопределить центральный репозиторий и плагин-репозиторий для выпусков и моментальных снимков:

<repositories>
    <repository>
        <id>central</id>
        <url>http://repo1.maven.org/maven2</url>
        <releases>
                <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>    
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>http://repo1.maven.org/maven2</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

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

Ответ 3

В случае репозитория всей компании, который должен обрабатывать все и каждый запрос артефакта, вы можете настроить один репозиторий, чтобы отразить все в вашем $MAVEN_HOME/conf/settings.xml:

<mirror>
  <id>internal-repository</id>
  <name>Maven Repository Manager running on repo.mycompany.com</name>
  <url>http://repo.mycompany.com/proxy</url>
  <mirrorOf>*</mirrorOf>
</mirror>

Источник

Ответ 4

Самый простой способ - использовать параметр -o, который говорит maven для запуска в автономном режиме. Конечно, вам нужно будет обеспечить, чтобы у вашего локального репо было все, что вам нужно, но это, по крайней мере, устраняет любые проблемы безопасности, которые могут возникнуть при автоматическом подключении к несанкционированному репо.

Ответ 5

Похоже, кто-то активно пытается применить политику управления Open Source. Это приятно слышать.

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

Как замечает Рори, вы должны убедиться, что у вас есть все необходимое в этом репозитории, прежде чем остановить доступ к Maven Central (Центральный репозиторий) или к любому другому публичному репозиторию с открытым исходным кодом.

Марк делает хороший вывод о возможностях закупок Nexus. После того как этот внутренний менеджер репо настроен со всеми вашими "одобренными" компонентами, вы также можете включить функцию проверки работоспособности Nexus Repository (бесплатно), который сообщает обо всех лицензиях компонентов, известных уязвимостях безопасности и т.д. для компонентов в ваших репозиториях.

Полное раскрытие, я работаю на Sonatype.