具有多个领域的 SBT 凭据文件

SBT credentials file with multiple realm

我们 运行 一个神器服务器,它已经移动到不同的端点 (artifactory-b.example.com)。为了使其向后兼容,旧的 url (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)。

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

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

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

可能无法在一个凭证文件中拥有多个领域,但您可以在多个凭证文件中拥有多个领域,每个领域在一个单独的凭证文件中。

~/.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")