maven - зеркало в зависимости от проекта

У меня есть зеркало для центральной настройки maven, подобное этому в settings.xml:

<mirrors>
  <mirror>
    <id>artifactory-other</id>
    <mirrorOf>*</mirrorOf>
    <url>http://some.internal.site/artifactory/repo</url>
    <name>Artifactory</name>
  </mirror>
</mirrors>

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

Как я могу сделать это автоматически? Можно ли определить профиль с отдельными зеркалами и автоматически активировать его на основе пути к проекту? Есть какое-то простое решение?


person mabn    schedule 20.06.2013    source источник


Ответы (3)


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

person JBaruch    schedule 24.06.2013

К сожалению, с Maven нет готового решения. Обычно я проверяю свой settings.xml через git и имею разные ветки для разных сетей, например, на работе, дома и т. д. Результат сводится к простому

git checkout HOME

or

git checkout WORK

и т. д.

person khmarbaise    schedule 20.06.2013

С новым maven (3.3.1+) используйте project-settings-extension, чтобы загрузить настройки проекта и поместить зеркала проекта в ${basedir}/.mvn/settings.xml в каждом проекте.

in ${basedir}/.mvn/extensions.xml

    <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
      <extension>
        <groupId>com.github.gzm55.maven</groupId>
        <artifactId>project-settings-extension</artifactId>
        <version>0.0.1</version>
      </extension>
    </extensions>

in ${basedir}/.mvn/settings.xml

<settings>
  <mirrors>
    <mirror>
      <id>id</id>
      <url>https://internal-repo/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

Тогда проект будет строиться "из коробки" во внутренней сети с mvn test, а не загрязнять вашу личную .m2/settings.xml.

person James Z.M. Gao    schedule 11.04.2018