Как настроить Grails 2.4.0 для разрешения артефактов от JFROG Artifactory с аутентификацией?
-
20-12-2019 - |
Вопрос
Это проблема, которая возникает каждые несколько месяцев. Я делаю обновления Grails, и приложение не может решить мои артефакты от моего обеспеченного репозитория артефактов.На этот раз я сделал модернизацию для Grails 2.4.0, и снова проблема существует. Я настроил свой репозиторий, как описано в документации Grails (что, кажется, очень устарела), но Grails не может разрешить мои зависимости от нашего репо.Это не аутентифицируется правильно.
Так что мои последние вопросы, которые уже просили многие люди:
Как настроить Grails (текущий 2.4.0) с Maven в качестве зависимости - Resolver для работы с частным рефизием 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"
])
}
}
}
. Решение 2
Я мог бы решить эту проблему и выяснить, почему у меня всегда были проблемы с артефактивными репозиториями, которые требуют аутентификации.
Есть проблема состояния заголовка HTTP с артефактором. Если вы сделали весь свой артефакторий с помощью Admin-> Security-> General-> Разрешить флажок Anonymous Access (не проверяемый) Все работает, потому что Artifactory отвечает с помощью кода состояния HTTP «401 требуется для авторизации», и Grails делает другой запрос с настройкой Учетные данные авторизации, которые отлично работают.
Если вы проверили флажок (потому что у вас есть как явные, так и публичные репозитории, как я), вы получаете вступительные проблемы, потому что артефактория больше не отвечает с кодом состояния 401. Вместо этого он отвечает «404 не найден», даже если Артефакт находится в репозитории, и только аноним не имеет доступа к нему. В Access.Log вы можете найти «Скачать запрещено» в этом случае и Grails не делает второй запрос с настроенными учетными данными из-за кода состояния состояния 404.
Так что вы должны создать отдельные артефакторы для ваших публичных и частных репозиториев или мы должны реализовать новую опцию конфигурации для Greails для поддержки функции «всегда аутентификации» на выбранных репозиториях. Я предложу это команде разработки Grails через Grails Bugtracker, и я также буду искать разработчиков артефакторы для создания варианта обходного пути.
Другие советы
Следующая настройка работает для меня с артефактором
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
}
...
}
.
Обратите внимание, что репозиторий не определен в разделе «Генеракодицетагкод».
Кроме того, вы должны убедиться, что пользователь «Reader» имеет необходимые разрешения для репозитория «Release Plugins-Local».
Хороший способ проверить настройку репозитория проверяет журнал Artifactory запроса / доступа и мониторинга для запросов, выполняемых Grails.