如何在 Grails 2.4 中外部化 Maven 凭证

Posted

技术标签:

【中文标题】如何在 Grails 2.4 中外部化 Maven 凭证【英文标题】:How to externalise Maven credentials in Grails 2.4 【发布时间】:2014-08-24 00:43:31 【问题描述】:

我正在尝试在 Grails 2.4 项目中从使用 Ivy 迁移到使用 Aether 解析器。

我遇到的问题与将凭据外部化有关。与此相关的信息可以在此处的 Grails 手册中找到:http://grails.org/doc/latest/guide/conf.html#dependencyRepositories

似乎没有记录的方法可以将使用 Maven 的凭据外部化,就像使用 Ivy 一样。

使用 Ivy,我可以将这样的内容放入我的 .grails/settings.groovy 文件中:

grails.project.ivy.authentication = 
    credentials 
        realm = "My Repo"
        host = "repo.mycustomrepo.com"
        username = "user"
        password = "password"
    

要使用 Aether,我不得不将凭据块直接放在我的 BuildConfig.groovy 中,如下所示:

repositories 
    inherits true // Whether to inherit repository definitions from plugins

    grailsPlugins()
    grailsHome()
    mavenLocal()
    grailsCentral()
    mavenCentral()
    mavenRepo("http://repo.mycustomrepo.com") 
      //Add authentication details to repository connection
      auth([
        username: 'user',
        password: 'password'
      ])
    

不幸的是,这对我来说确实是个问题,因为在我的组织中,我们使用配置为使用我们的 LDAP 凭据的 Artifactory。这是一个问题,因为我不想在源代码管理中提交我的凭据。

是否有未记录的解决方案或 Grails 根本不支持它?

【问题讨论】:

您尝试过 Maven 设置吗? maven.apache.org/settings.html#Servers 我刚试过,但没有帮助。可能我没有正确设置。我在$user.home/.m2/settings.xml 中创建了一个settings.xml 文件。我用<server><id>myRepo</id><username>myUsername</username><password>myPassword</password></server> 添加了一个服务器部分,然后我添加到我的BuildConfig.groovy mavenRepo(id:'myRepo', url: "https://myRepo.com") 【参考方案1】:

使用id 定义您的回购:

 mavenRepo(id:'myrepo', url:"http://localhost:8085/artifactory/libs-release-local/") 

然后使用之前指定的id~/.grails/settings.groovy 中定义您的凭据:

grails.project.dependency.authentication = 
  credentials 
    id = "myrepo"
    username = "foo"
    password = "bar"
   

【讨论】:

是否有机会至少以某种方式混淆凭据?

以上是关于如何在 Grails 2.4 中外部化 Maven 凭证的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Grails 命令/SDK 中清除 Maven 缓存?

如何让 Grails 从 Maven 存储库中获取最新的本地 jars?

如何从 grails 3.1.8 中的外部文件加载数据源配置?

如何通过 Maven pom.xml 安装 Grails 插件?

Grails从1.3升级到2.4

Grails 视图编解码器不工作 (2.4)