Переопределить sbt default resolvers с аутентифицированным репо?
У меня есть репозиторий maven с аутентификацией, и я хочу, чтобы sbt использовал только репозиторий maven
My build.sbt:
resolvers += "My Repo" at "https://my.repository.addresss/repo/"
externalResolvers <<= resolvers map { rs =>
Resolver.withDefaultResolvers(rs, mavenCentral = false)
}
Но когда я набираю sbt clean compile
, он по-прежнему загружается с repo1.maven.org, я не могу его переопределить!
Поскольку мое maven-репо должно аутентифицироваться, поэтому он всегда терпит неудачу, когда я устанавливаю конфигурацию репо по умолчанию в ~/.sbt/repositories
Есть ли способ, которым я могу использовать только мое репо и успешно пройти проверку подлинности?
Ответы
Ответ 1
К сожалению, я могу только помочь вам с одной частью вашего вопроса.
Если вы хотите использовать свое maven-репо, посмотрите на документацию sbt, раздел прокси-репозитории. Там используется файл ~/.sbt/repositories. В качестве альтернативы вы также можете использовать sbt.boot.properties(см. Launcher configuration).
Не забудьте переопределить репозитории сборки из скриптов сборки, как описано здесь. Если
вы этого не делаете, sbt все еще пытается подключиться к repo1.maven.org.
Я сделал то же самое сегодня (используя sbt 0.12.3), и он работает!
Ответ 2
Попробуйте следующее:
lazy val yourRepo = "yourRepo" at "https://yourRepo.com/nexus/content/groups/public"
fullResolvers := {
val oldResolvers = fullResolvers.value
val idx = oldResolvers.map(_.isInstanceOf[DefaultMavenRepository$]).indexOf(true)
oldResolvers.take(idx) ++ Seq(yourRepo) ++ oldResolvers.drop(idx)
}
Ответ 3
Я встретил подобную ситуацию. Решение
-
создать ~/.ivy2/.credentials
с помощью
realm=Sonatype Nexus Repository Manager
host=yourRepo.com
user=yourUser
password=yourpassword
-
добавьте эту строку в build.sbt
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
-
создать ~/.sbt/repositories
в соответствии с http://www.scala-sbt.org/1.0/docs/Proxy-Repositories.html