如何配置Grails 2.4.0以通过身份验证从JFrog artifactory中解析工件?
-
20-12-2019 - |
题
这是一次每隔几个月的问题。 我做了一些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"
])
}
}
}
. 解决方案 2
我可以解决这个问题,发现我为什么我始终遇到需要身份验证的艺术存储库问题。
有一个http标头状态问题与artifactory。
如果您将整个艺术私有的私人带有管理员 - > Security-> General->允许匿名访问复选框(未选中)所有作品,因为artifactory响应HTTP状态代码“需要401授权”,并且Grails与配置的另一项请求授权凭证,适用良好。
如果您检查了复选框(因为您拥有像我这样的私人和公共存储库),您会获得介绍问题,因为工人不再使用401个状态代码进行响应。相反,它即使是响应“404找不到”
工件在存储库中,只有匿名无法访问它。在Access.log中,您可以在这种情况下找到“下载拒绝”,并且由于404状态代码,Grails不会使用已配置的凭据进行第二个请求。
其他提示
以下设置为我的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
部分中定义。
此外,您必须确保“阅读器”用户具有所需的“插件 - 释放本地”存储库的权限。
测试存储库设置的好方法是检查artifactory请求/访问日志和监视Grails执行的请求。