SBT is unable to find credentials when attempting to download from an Artifactory virtual repo

前端 未结 2 733
梦如初夏
梦如初夏 2020-12-09 05:31

I\'m trying to run SBT behind a corporate firewall. Another team has configured an Artifactory proxy. This proxy works fine with anonymous access switched on, but when we ma

相关标签:
2条回答
  • 2020-12-09 05:54

    I think the default location for this file is ${HOME}/.sbt/<sbt-version>/.credentials; while I trust there is published documentation on this, I confirmed this by clicking around in the code.
    @salim-fadhley, looks like you are missing the SBT version in the path.

    EDIT: You need to add DefaultOptions.addCredentials to your build.sbt; you can then verify what SBT picks up with show credentials.

    File location aside, there seems to be confusion between repository names (mean nothing) vs. security realms (mean everything).

    The auth-challenge that comes back from the repository server will include the name of the security realm; as a client/developer, you have no control over what it is and my guess is it must match the realm you (client/developer) specify in your .credentials file (wherever that is).

    Meanwhile, the repository name (as featured in build.sbt) actually means nothing to anyone outside development of the corresponding project e.g. the repository server admins could not care from one project to the next.

    0 讨论(0)
  • 2020-12-09 06:08

    See this question for details on how to configure global credentials.

    To summarise:

    If you need to boot SBT from a proxy repository, set the system property sbt.boot.credentials to point to your credentials file. You can do this in your %CSIDL_PROGRAM_FILESX86%/sbt/conf/sbtconfig.txt, for example:

    -Dsbt.boot.credentials=/Users/my-user-name/.sbt/credentials
    

    Alternatively you can use the SBT_CREDENTIALS environment variable for the same purpose.

    For Artifactory, the realm in the credentials file should be set to:

    realm=Artifactory Realm
    

    For authenticating dependency artifact retrieval, create a file like %USERPROFILE%/.sbt/0.13/plugins/my-credentials.sbt with a credentials setting. For example:

    credentials += Credentials(Path.userHome / ".sbt" / "credentials")
    
    0 讨论(0)
提交回复
热议问题