В стартовый набор входят proxy-репозиторий maven-central (зеркало Maven Central) и hosted-репозитории maven-releases (релизы) и maven-snapshots (snapshot-версии).

Подключение к proxy

Направьте Maven на зеркало в ~/.m2/settings.xml:

<settings>
  <mirrors>
    <mirror>
      <id>galleon-central</id>
      <url>https://<GALLEON_HOST>/repository/maven-central</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
</settings>

Если анонимный доступ к репозиторию выключен, добавьте блок <server> с тем же id, что у зеркала, и вашими учётными данными — по образцу из раздела Публикация.

Публикация

Укажите репозиторий назначения в pom.xml и учётные данные в settings.xml — значения id в обоих блоках должны совпадать:

<!-- pom.xml -->
<distributionManagement>
  <repository>
    <id>galleon-releases</id>
    <url>https://<GALLEON_HOST>/repository/maven-releases</url>
  </repository>
</distributionManagement>
<!-- ~/.m2/settings.xml -->
<settings>
  <servers>
    <server>
      <id>galleon-releases</id>
      <username><USERNAME></username>
      <password><PASSWORD></password>
    </server>
  </servers>
</settings>
mvn deploy

Публикация из Gradle:

publishing {
  repositories {
    maven {
      url = uri("https://<GALLEON_HOST>/repository/maven-releases")
      credentials {
        username = "<USERNAME>"
        password = "<PASSWORD>"
      }
    }
  }
}

Использование опубликованных артефактов

Зеркало покрывает только Maven Central, поэтому hosted-репозитории подключаются к сборке отдельными записями — в pom.xml или в профиле settings.xml:

<repositories>
  <repository>
    <id>galleon-releases</id>
    <url>https://<GALLEON_HOST>/repository/maven-releases</url>
  </repository>
  <repository>
    <id>galleon-snapshots</id>
    <url>https://<GALLEON_HOST>/repository/maven-snapshots</url>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

Для Gradle:

repositories {
  maven { url = uri("https://<GALLEON_HOST>/repository/maven-releases") }
  maven { url = uri("https://<GALLEON_HOST>/repository/maven-snapshots") }
}

Учётные данные — те же блоки <server> (Maven) или credentials (Gradle), что и при публикации.

Релизы и snapshot-версии

Повторная публикация существующей релизной версии отклоняется с кодом 409: релизы неизменяемы.

Каждая загрузка snapshot-версии получает метку времени (YYYYMMDD.HHMMSS-N) и попадает в maven-metadata.xml; запрос версии X-SNAPSHOT отдаёт последнюю сборку.

Особенности

Особенности формата:

  • maven-metadata.xml генерируется сервером автоматически — публиковать его не нужно.
  • Hosted-репозиторий отдаёт только те checksum-файлы, которые загрузил клиент: Maven по умолчанию публикует .sha1 и .md5. Чтобы публиковать все четыре, задайте при деплое -Daether.checksums.algorithms=SHA-1,MD5,SHA-256,SHA-512.
  • Классификаторы (sources, javadoc) работают штатно.