Как настроить Grails 2.4.0 для разрешения артефактов из JFrog Artifactory с аутентификацией?

Это проблема, которая возникает каждые несколько месяцев. Я делаю некоторые обновления Grails, и приложение не может разрешить мои артефакты из моего защищенного репозитория артефактов. На этот раз я обновился до Grails 2.4.0, и проблема снова существует. Я настроил свой репозиторий, как описано в документации Grails (которая кажется очень устаревшей), но Grails не может разрешить мои зависимости от нашего репозитория. Он не аутентифицируется правильно.

Итак, мои последние вопросы, которые уже задали многие люди:

Как настроить Grails (текущая версия 2.4.0) с maven в качестве средства разрешения зависимостей для правильной работы с частным репозиторием maven (artifactory) с аутентификацией? Что мне нужно написать в свой BuildConfig, чтобы он заработал?

Это не работает:

if (Environment.current == Environment.PRODUCTION) {

    if (grails.project.dependency.resolver == "maven") {
        mavenRepo "http://repo.myRepoHost.com/plugins-release-local/", {
            auth([
                username: "reader",
                password: "readerPw"
            ])
        }
    }

}

person whitenexx    schedule 02.06.2014    source источник
comment
Это что, а не что. :)   -  person lucke84    schedule 03.06.2014
comment
Спасибо :) Я изменил это.   -  person whitenexx    schedule 03.06.2014
comment
Я не мог заставить его работать до сегодняшнего дня. Неужели ни у кого нет решения?   -  person whitenexx    schedule 17.06.2014
comment
У нас нет проблем с Artifactory после того, как мы настроили его в соответствии с: wordpress.transentia.com.au/wordpress/2014/04/09/ У нас есть только одно определение репо (без grailsHome, mavenHome и т. д.), например: mavenRepo (id: 'libs', url :hostname/artifactory/libs). Безопасность настраивается в $userHome/.m2/settings.xml в соответствии с документацией maven.   -  person droggo    schedule 25.07.2014


Ответы (2)


Следующая настройка работает для меня с Artifactory

grails.project.dependency.resolver = "maven"
grails.project.ivy.authentication = {
    repositories {
        mavenRepo('http://localhost:8081/artifactory/grails-remote') {
             auth([
                realm: "Artifactory Realm",
                username: 'user',
                password: 'pass'
            ])
        }
    }
}

grails.project.dependency.resolution = {
    ...
    repositories {
        inherits true
    }
    ...
}

Обратите внимание, что репозиторий не определен в разделе grails.project.dependency.resolution.
Кроме того, вы должны убедиться, что у пользователя «читатель» есть необходимые разрешения для репозитория «plugins-release-local».
Хороший способ проверить настройка репозитория проверяет журнал запросов/доступа Artifactory и отслеживает запросы, выполняемые Grails.

person Dror Bereznitsky    schedule 04.06.2014
comment
Не помогло, такая же проблема осталась. Я вижу 2014-06-06 09:35:30,954 [DENIED DOWNLOAD] для анонимных в журналах... Grails не проходит аутентификацию правильно. Неужели ни у кого нет решения для этого? - person whitenexx; 06.06.2014

Я смог решить эту проблему и выяснил, почему у меня всегда были проблемы с артефактными репозиториями, требующими аутентификации.

Существует проблема статуса http-заголовка с Artifactory. Если вы сделали всю свою артефактуру приватной с помощью флажка Admin-> Security-> General-> Allow Anonymous Access (снятый флажок), все работает, потому что Artifactory отвечает кодом состояния http «401 Требуется авторизация», а grails выполняет другой запрос с вашим настроенным учетные данные авторизации, которые отлично работают. флажок снят

Если вы установили флажок (потому что у вас есть как частные, так и общедоступные репозитории, как у меня), у вас возникнут проблемы с вводом, потому что Artifactory больше не отвечает с кодом состояния 401. Вместо этого он отвечает «404 Not Found», даже если артефакт находится в репозитории и только анонимный пользователь не имеет к нему доступа. В access.log в этом случае вы можете найти «DOWNLOAD DENIED», и Grails не делает второй запрос с настроенными учетными данными из-за кода состояния 404. установлен флажок

Таким образом, вам нужно создать отдельные артефактные экземпляры для ваших общедоступных и частных репозиториев, или мы должны реализовать новую опцию конфигурации для Grails, чтобы поддерживать функцию «всегда аутентифицировать» в выбранных репозиториях. Я предложу это команде разработчиков Grails через средство отслеживания ошибок Grails, и я также поищу разработчиков артефактов, чтобы создать обходной путь для этого.

person whitenexx    schedule 24.07.2014