这是每隔几个月发生的问题。 我做了一些grails升级,应用程序无法从我的安全工件库中解析我的工件。这次我升级到grails 2.4.0,但问题仍然存在。 我按照grails文档(这看起来非常过时)中的描述配置了我的存储库,但是grails无法从我们的repo中解析我的依赖项。它没有正确验证。
所以很多人已经问过我的最后一个问题:
如何使用maven作为依赖项解析程序配置grails(当前版本2.4.0)以正确处理私有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"
])
}
}
}
答案 0 :(得分:1)
以下设置适用于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执行的请求。
答案 1 :(得分:1)
我可以解决这个问题,并找出为什么我总是遇到需要身份验证的神器存储库的问题。
有一个神秘的http标头状态问题。 如果您使用Admin->将您的整个神器设为私有。安全性 - >常规 - >允许匿名访问复选框(未选中)一切正常,因为artifactory响应http状态代码“401 Authorization Required”,grails使用您配置的授权凭据执行另一个请求,该工作正常。
如果您选中了复选框(因为您有像我这样的私有和公共存储库),您会收到介绍问题,因为artifactory不再响应401状态代码。相反,它即使是“404 Not Found”也会响应 artifact位于存储库中,只有匿名者才能访问它。在access.log中,您可以在这种情况下找到“DOWNLOAD DENIED”,并且由于404状态代码,grails不会使用配置的凭据发出第二个请求。
因此,您需要为公共和私有存储库创建单独的工件实例,或者我们必须为grails实现新的配置选项,以支持所选存储库上的“始终验证”功能。我会通过grails bugtracker向grails开发团队建议这一点,我也会寻找神器开发人员来为此构建一个变通办法。