【问题标题】:SBT: Cannot publish to Apache ArchivaSBT:无法发布到 Apache Archiva
【发布时间】:2014-01-06 19:52:43
【问题描述】:

错误信息:

   java.io.IOException: Access to URL 
   http://maven.company.com/repository/internal/com/company/
   project_2.10/0.0.3/project_2.10-0.0.3.pom was
   refused by the server: Unauthorized

运行 Apache Archiva 1.4-M4(latest),我可以通过 Web 界面上传,但不能通过 SBT。

在 SBT 中使用这些设置:

 publishTo := Some("company releases" at "http://maven.company.com/repository/internal"),
   credentials += Credentials(
     "company Maven Repository",
          "maven.company.com",
          "username",
          "password"
        ),
   publishMavenStyle := true,
   publishArtifact in Test := false,
   pomIncludeRepository := { _ => true },
   // .. some xml with author details
 }

所有详细信息,包括用户名、密码和网址都是正确的。

【问题讨论】:

  • archiva.log 文件中有关于 authz 的日志吗?您是否可以在 sbt 工具中添加一些调试以确保用户/密码正在转发?

标签: scala maven sbt archiva


【解决方案1】:

安全领域对 Ivy 很重要。它就像唯一需要您使用有效安全领域的依赖项管理器。我相信对于 apache archiva 它是“Repository Archiva Managed”。您可以通过尝试向 Archiva 发出自己的 HTTP 请求来检查它告诉您它支持哪些领域。

这是尝试检测安全领域的代码:https://github.com/sbt/sbt-pom-reader/blob/2b515b58739ef7bdfad8f98248e901db8e140892/src/main/scala/com/typesafe/sbt/pom/MavenHelper.scala#L212-L221

更新: 领域看起来像:“Repository Archiva Managed internal Repository”。如果您发布到其他 repo,请将“internal”替换为 repo 的名称。

确定安全领域后,您希望按如下方式更新您的构建:

  credentials += Credentials(
      "Repository Archiva Managed internal Repository",  // Or whatever you detect as the security realm
      "maven.company.com",
      "username",
      "password"
    ),

【讨论】:

  • 随时。这是尝试发布时最常见的错误,但在 Ivy 中改进错误消息的挂钩是不可能的(静态方法),否则我已经尝试修补它。
猜你喜欢
  • 2014-04-05
  • 2019-08-23
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2019-04-19
  • 2016-04-04
相关资源
最近更新 更多