【问题标题】:SBT credentials file with multiple realm具有多个领域的 SBT 凭证文件
【发布时间】:2016-11-21 12:36:11
【问题描述】:

我们运行了一个人工服务器,该服务器已移动到不同的端点 (artifactory-b.example.com)。为了使其向后兼容,旧网址 (artifactory-a.example.com) 将被代理到新网址。

但是,使用 sbt 发布使用具有以下布局的 .ivy2/.credentials 文件

realm=Artfactory realm
host=artifactory-a.example.com
user=artifactory-user
password=P4ssw0rdH4sh

但是,我想更改此设置,以便新版本将发布到正确的端点

realm=Artfactory realm
host=artifactory-d.example.com
user=artifactory-user
password=P4ssw0rdH4sh

是否可以在一个文件中添加多个领域?那 sbt 会尝试第一个,如果它不起作用(Forbidden|Not Found)第二个?所以我的.ivy2/.credentials 文件看起来像

# old instance for backwards compatibility
realm=Artfactory realm
host=artifactory-a.example.com
user=artifactory-user
password=P4ssw0rdH4sh

# New spiffy instance
realm=Artfactory realm
host=artifactory-b.example.com 
user=artifactory-user
password=P4ssw0rdH4sh

任何人都有这方面的经验,或者我一定要使用两个文件,并将我的 repo 中的引用更改为第二个文件(即.ivy2/.credentials2)。

附:领域在一个文件中,因为多个存储库使用这些凭据进行发布。 这里非常重要的是领域具有相同的名称,只有不同的端点(不像this post):

【问题讨论】:

    标签: sbt credentials


    【解决方案1】:

    可能无法在一个凭证文件中包含多个领域,但您可以在多个凭证文件中包含多个领域,每个领域都位于一个单独的凭证文件中。

    ~/.ivy/.credentials 将是:

    realm=Sonatype Nexus Repository Manager
    host=mvn.nexus1.org
    user=readonly
    password=readonlyPass
    

    ~/.ivy/.credentials.deploy 中将是:

    realm=Sonatype Nexus Repository Manager
    host=deploy.nexus2.org
    user=deployment
    password=deploymentPass
    

    那么您的build.sbt 中将包含这些行:

    credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
    credentials += Credentials(Path.userHome / ".ivy2" / ".credentials.deploy")
    

    【讨论】:

      【解决方案2】:

      事实证明,使用属性文件无法实现我想要的,因为这不是属性文件的工作方式。

      也许还有其他方法,但是我想要的解决方案无法通过这种方式实现,很遗憾

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 2021-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多