Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SBT: Cannot publish to Apache Archiva

Error message:

   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

Running Apache Archiva 1.4-M4(latest), I am able to upload via the web interface, but not via SBT.

Using these settings in 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
 }

All details, including username, password and urls are correct.

like image 831
flavian Avatar asked Jan 06 '14 19:01

flavian


1 Answers

The Security Realm is important to Ivy. It's like the only dependency manager that requires you to use a valid Security realm. I believe for apache archiva it's "Repository Archiva Managed". You can check by trying to do your own HTTP request to Archiva and see what Realms it tells you it supports.

Here's code which attempts to detect security realms: https://github.com/sbt/sbt-pom-reader/blob/2b515b58739ef7bdfad8f98248e901db8e140892/src/main/scala/com/typesafe/sbt/pom/MavenHelper.scala#L212-L221

Update: The realm looks like: "Repository Archiva Managed internal Repository". If you publish to other repos, replace "internal" with the name of the repo.

once you determine the security realm, you want to update your build as follows:

  credentials += Credentials(
      "Repository Archiva Managed internal Repository",  // Or whatever you detect as the security realm
      "maven.company.com",
      "username",
      "password"
    ),
like image 193
3 revs, 3 users 81% Avatar answered Oct 20 '22 13:10

3 revs, 3 users 81%