Используйте Gradle для загрузки архивов в репозиторий GitLab Maven - PullRequest
0 голосов
/ 22 декабря 2018

Я использую Gradle и Gradle Maven плагин для загрузки архивов в Maven Central.Это отлично работает.Я хочу загрузить те же архивы и в репозиторий GitLab Maven.Загрузка в этот репозиторий требует аутентификации со специальными значениями заголовка HTTP .Но я не знаю, как это сделать с помощью плагина Gradle Maven.Документация GitLab описывает процесс сборки на основе Maven с использованием pom.xml и settings.xml.В настоящее время у меня есть следующее:

Файлы, созданные с помощью Gradle:

build/libs
├── wms-1.2.0.jar
├── wms-1.2.0.jar.asc
├── wms-1.2.0-javadoc.jar
├── wms-1.2.0-javadoc.jar.asc
├── wms-1.2.0-sources.jar
└── wms-1.2.0-sources.jar.asc
build/poms
└── pom-default.xml

Файлы в соответствии с документацией GitLab:

pom.xml
settings.xml

Когда я выполняю

mvn deploy -s settings.xml

, затем pom-default.xml должны быть "смешаны" с pom.xml и build/libs/* должны использоваться в качестве местоположения архива.Как я могу это сделать?

1 Ответ

0 голосов
/ 23 декабря 2018

Обратите внимание, что плагин maven-publish «теперь является предпочтительным вариантом для публикации [Maven] артефактов» с помощью Gradle (см. Также примечание вверху на странице , которую высвязаны).Делать то, что вам нужно с плагином maven, было бы более громоздким, так как он более сложен и не так хорошо документирован, ИМХО.Поэтому я надеюсь, что вы не будете возражать, когда я отвечу на ваш вопрос, имея в виду плагин * 1007. *

Что касается аутентификации со специальными значениями заголовков HTTP, вы должны решить это следующим образом ( через ):

publishing {
    repositories {
        maven {
            url "http://repo.mycompany.com/maven2"
            credentials(HttpHeaderCredentials) {
                name = "Private-Token"
                value = "REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN"
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
}

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


Кстати: я в основном ответил на ваш вопрос о том, как проходить аутентификацию с помощью GitLab здесь.Если у вас возникнут проблемы с настройкой публикации, я бы порекомендовал опубликовать этот вопрос как отдельный вопрос с более подробной информацией о вашей настройке и, возможно, о том, что вы уже пробовали.


Отредактировано, чтобы добавить: если вам нужно использовать разные учетные данные заголовка в зависимости от определенных параметров командной строки, вы можете изменить приведенную выше конфигурацию credentials на что-то вроде следующего:

credentials(HttpHeaderCredentials) {
    if (project.hasProperty('jobToken')) {
      name = "Job-Token"
      value = project.property('jobToken')
    } else {
      name = "Private-Token"
      value = "REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN"
    }
}

В этом примере вы можете запустить ./gradlew -PjobToken=REPLACE_WITH_YOUR_JOB_TOKEN …в заданиях GitLab CI, оставляя часть -PjobToken=… при локальной работе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...