История: у нашей компании несколько Play! приложения, которые имеют свои тесты в нашем внутреннем CI. Каждое приложение Play извлекает зависимости из разных публичных репозиториев через http. Это не было идеальным (оно обходит наш внутренний репозиторий Nexus), но терпимо. Теперь мы добавляем дополнительную емкость CI и не хотим, чтобы новые компьютеры могли получать доступ за пределами брандмауэра.
В примере Play приложение следующая конфигурация в project/Build.scala
недостаточна для того, чтобы сборка не начиналась с repo.typesafe.com
и repo1.maven.org
:
sbtResolver := "Typesafe (proxy)" at "http://repo-1/nexus/content/repositories/typesafe-releases/"
resolvers := Seq(
"Maven Central (proxy)" at "http://repo-1/nexus/content/repositories/central/",
"Typesafe (proxy)" at "http://repo-1/nexus/content/repositories/typesafe-releases/",
// some more internal Nexus repositories
)
externalResolvers := Seq.empty
(repo-1
- наш внутренний хост Nexus, который проксирует Maven Central, Typesafe и другие репозитории)
Когда я удаляю некоторые зависимости, либо из Maven Central (например, Guava), либо из репозитория Typesafe (например, плагин для почтовой программы Play), и запускайте play compile
, я вижу на выходе, что зависимости все еще извлекаются из repo.typesafe.com
и repo1.maven.org
:
[info] downloading http://repo.typesafe.com/typesafe/releases/com/typesafe/play-plugins-mailer_2.9.1/2.0.2/play-plugins-mailer_2.9.1-2.0.2.jar ...
[info] [SUCCESSFUL ] com.typesafe#play-plugins-mailer_2.9.1;2.0.2!play-plugins-mailer_2.9.1.jar (981ms)
[info] downloading http://repo1.maven.org/maven2/com/google/guava/guava/12.0/guava-12.0.jar ...
[info] [SUCCESSFUL ] com.google.guava#guava;12.0!guava.jar (1422ms)
Чтобы усугубить проблему, мы также имеем несколько более старые версии всего: Scala 2.9.1, Play 2.0.1, sbt 0.11.3.
Как заставить приложение Play извлекать зависимости из внутреннего репозитория?