Gitlab как хранилище для maven

Page content

Или как отказаться от artifactory и начать жить

Автоматизируем деплой в git репозитарий

Можно это делать и вручную, но для автоматизации воспользуемся

  1. Завести репозитарий в gitlab, положим он будет называться artifacts и завести две ветки releases и snapshots
  2. Добавить расширение wagon-git в pom.xml проекта. Для этого нужно добавить репозитарий плагина
    <pluginRepositories>
      <pluginRepository>
        <id>synergian-repo</id>
        <url>https://raw.github.com/synergian/wagon-git/releases</url>
      </pluginRepository>
    </pluginRepositories>
    И дополнить раздел build необходимым расширением
    <extensions>
      <extension>
        <groupId>ar.com.synergian</groupId>
        <artifactId>wagon-git</artifactId>
        <version>0.2.5</version>
      </extension>
    </extensions>
  3. Использование плагина позволит описать наш git репозитарий в разделе distributionManagement. Обратите внимание на то, как выглядит урл. git протокол доступа, releases и snapshots ветки в репозитарии, если решили назвать иначе, то нужно вписать тут правильные значения. Авторизация в данном случае будет проходить штатными средствами git в соответствии с его настройками (.netrc, например).
    <distributionManagement>
      <repository>
        <id>gitlab-releases</id>
        <name>Gitlab releases</name>
        <url>git:releases://https://gitlab.example.com/artifacts</url>
      </repository>
      <snapshotRepository>
        <id>gitlab-snapshots</id>
        <name>Gitlab snapshots</name>
        <url>git:snapshots://https://gitlab.example.com/artifacts</url>
      </snapshotRepository>
    </distributionManagement>
  4. При корректной настройке mvn deploy выгрузит артефакт в репозитарий и создаст необходимую для maven структуру файлов.

Подключение репозитария к проектам

  1. В гитлабе нужно сгенерировать токен с доступом до api.
  2. В .m2/settings.xml добавим описание сервера в разделе servers
    <server>
      <id>gitlab-maven</id>
        <configuration>
          <httpHeaders>
            <property>
              <name>PRIVATE-TOKEN</name>
              <value>ТОКЕН ОТ ГИТЛАБА</value>
            </property>
          </httpHeaders>
        </configuration>
    </server>
  3. Добвим профиль в раздел profiles
    <profile>
      <id>gitlab</id>
        <repositories>
            <repository>
              <id>gitlab-releases</id>
              <url>https://gitlab.example.com/artifacts/raw/releases</url>
            </repository>
        </repositories>
    </profile>
  4. В pom.xml проекта добавим репозитарий
    <repositories>
      <repository>
        <id>gitlab-releases</id>
        <url>https://gitlab.example.com/artifacts/raw/releases</url>
      </repository>
    </repositories>

На этом настройка завершена.