Подключение приватного репозитория Gitlab в build.gradle

Добрый день,

необходимо в одном из проектов использовать артифакты опубликованные в приватном репозитории Gitlab. При подключении приватного репозитория в build.gradle проект перестал собираться, выдает ошибку:

*** What went wrong:**
A problem occurred evaluating root project.
> Failed to apply plugin [id ‘cuba’]
** > Can not use getCredentials() method when not using PasswordCredentials; please use getCredentials(Class)**

https://docs.gitlab.com/ee/user/packages/maven_repository/#authenticate-with-a-deploy-token-in-gradle

что было сделано:

buildscript {

maven {
url ‘https://gitlab.com/api/v4/projects/1234567/packages/maven
name “GitLab”
credentials(HttpHeaderCredentials) {
name = ‘Deploy-Token’
value = ‘JjksdviouhUHysvI65’
}
authentication {
header(HttpHeaderAuthentication)
}
}

}

Добрый день

Сообщите пожалуйста какую версию CUBA Studio вы используете.

Добрый день, версия 7.2.11

Это вы, очевидно, указали версию CUBA Platform в проекте.

Меня же интересует версия Studio.
В главном меню выберите пункт CUBA -> Welcome
Скопируйте блок Product Versions (ссылка Copy в его нижней части) и приложите здесь.
Спасибо

CUBA Platform version: 7.2.11
CUBA Studio plugin version: 14.3-193
IntelliJ version: IntelliJ IDEA 2020.1.4 (Ultimate Edition)

Спасибо!

Получилось воспроизвести данную ошибку. Проявилась проблема в CUBA Gradle plugin при работе с подобными репозиториями. Заведен GitHub issue.

В качестве временного решения можно создать в build.gradle в общем блоке configure для всех модулей или только блоке нужного модуля секцию repositories и объявить указанный репозиторий в ней.

Т.е. например:

        configure([globalModule, coreModule, webModule, webToolkitModule]) {
            apply(plugin: 'java')
            apply(plugin: 'maven')
            apply(plugin: 'cuba')

        repositories {
            maven {
                url 'https://gitlab.com/api/v4/projects/1234567/packages/maven'
                name 'GitLab'
                credentials(HttpHeaderCredentials) {
                    name = 'Deploy-Token'
                    value = 'JjksdviouhUHysvI65'
                }
                authentication {
                    header(HttpHeaderAuthentication)
                }
            }
        }

        ...

Это должно помочь

Попробовал предложенный вами вариант. Не работает. Он все-равно пытается разрешить зависимости (и найти артифакт) именно в тех репозиториях, что указаны в секции buildscript. Сборка падает с ошибкой

FAILURE: Build failed with an exception.

  • What went wrong:
    A problem occurred configuring project ‘:wp-core’.

Could not resolve all dependencies for configuration ‘:appComponent’.
Could not find tech.opus.tm:tm-global:1.2.9.

Если необходимая зависимость объявлена как appComponent, тогда необходимо также продублировать объявление этого репозитория в корне build.gradle, рядом с объявлением подобных зависимостей

Это помогло, спасибо.

@krivopustov

Похоже, проблема вернулась…
Cuba-platform 7.2.16
Studio 15.9-213

Мы в ходе “импортозамещения” переехали на GitLab (Self-hosted).

Если наш локальный репозиторий GitLab объявить в buildscript {...} он игнорируется и зависимости из него не обнаруживаются.

Воспользовались рецептом с объявлением нашего репозитория в configure([globalModule, coreModule, webModule, webToolkitModule]) {....}
image

Но помогло только на половину…

В этом случае, если проект использует в качестве зависимостей простые JAR, хранящиеся в нашем репозитории GitLab - сборка проекта походит нормально.

Но если проект использует наш собственный Cuba-addon, опубликованный в репозитории GitLab (Self-hosted) - получаем аналогичную ошибку.
Причем тут видно, что наш репозиций даже не фигурирует в числе тех, где прошел поиск зависимости:

image

Проекты, в которых используется наш Cuba-addon приходится собирать локально через локальный репозиторий :frowning:

Добрый день

Из вашего поста не понял, к сожалению, продублирован ли репозиторий в корне build.gradle, рядом с объявлением зависимостей. Как это рекомендуется в моём посте выше.

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

По поводу неработоспособности стандартного варианта с указанием репозитория в секции buildscript мы проверим.

1 симпатия

Блин! А вот дополнительное указание репозитория перед appComponent я пропустил … :see_no_evil:
Теперь собирается и с аддоном.