2015-07-06 14 views
5

Chcę użyć SBT z IntelliJ IDEA 14.1. Chcę jednak pobrać wszystko z wewnętrznego wewnętrznego serwera Nexus. Zrobiłem tam dwie grupy repozytoriów, które zawierają pewne repozytoria proxy.Jak zapobiec pobieraniu SBT z oficjalnych repozytoriów?

Mój plik .sbt/repositories wygląda następująco:

[repositories] 
    local 
    my-ivy-proxy-releases: http://our-nexus/nexus/content/groups/sbt_ivy_group/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] 
    my-maven-proxy-releases: http://our-nexus/nexus/content/groups/public/ 

Adresy URL są w porządku, mogę otworzyć je w przeglądarce.

Teraz, gdy uruchamiam sbt albo z wiersza poleceń, albo z IntelliJ IDEA, próbuje pobrać z repo.scala-sbt.org, repo.typesafe.com itd., Chociaż nie chcę tego.

Jak zmusić usługę SBT do pobierania tylko z repozytoriów w pliku repozytoriów?

EDIT: To robi pobrania z naszej firmy Nexus, ale dopiero po wypróbowaniu „oficjalne” wersje, które powodują mnóstwo „odmowa połączenia”, ponieważ jesteśmy za pośrednictwem serwera proxy HTTP, który spowalnia zależność rozstrzygnięcia w dół dość dużo.

EDIT 2: Próbowałem dodać -Dsbt.override.build.repos=true do parametrów VM ustawień SBT IDEA, ale to chyba nic nie zmienia.

Odpowiedz

3

Najlepszym sposobem jest przesłonić domyślne repozytoria: od help in sbt a także here

domyślne Zastąp przeliczniki

resolwera konfiguruje dodatkowych resolwera użytkowników inline. Domyślnie sbt łączy te programy tłumaczące z domyślnymi repozytoriami (Maven Central i lokalne repozytorium Ivy), aby utworzyć zewnętrzneResolvers. Aby mieć większą kontrolę nad repozytoriami, ustaw externalResolvers bezpośrednio. Aby oprócz realnych ustawień określić tylko repozytoria, skonfiguruj przeliczniki.

Na przykład, aby korzystać z repozytorium Sonatype OSS Migawki oprócz domyślnych repozytoriach

resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" 

Aby korzystać z lokalnego repozytorium, ale nie repozytorium Maven Central:

externalResolvers := 
    Resolver.withDefaultResolvers(resolvers.value, mavenCentral = false) 

odłączać wszystkie przeliczniki dla wszystkich kompilacji

Repozytoria używane do pobierania sbt, Scala, wtyczek i zależności aplikacji można konfigurować globalnie i deklarować d zastąpić przeliczniki skonfigurowane w definicji kompilacji lub wtyczki. Istnieją dwie części:

Define the repositories used by the launcher. 
Specify that these repositories should override those in build definitions. 

Repozytoria używane przez wyrzutnię może być pominięte przez zdefiniowanie ~/.sbt/repozytoria, które musi zawierać [repozytoria] Część z takim samym formacie jak w pliku konfiguracyjnym Launcher Specyfikacji. Na przykład:

[repositories] 
local 
my-maven-repo: http://example.org/repo 
my-ivy-repo: http://example.org/ivy-repo/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext] 

inną lokalizację dla pliku repozytoriów może być określony przez właściwość systemu sbt.repository.config w skrypcie startowym SBT. Ostatnim krokiem jest ustawienie sbt.override.build.repos na wartość true, aby używać tych repozytoriów do rozwiązywania zależności i pobierania.

+0

Czy jest to prosty sposób na zrobienie tego tylko dla jednej biblioteki? tj. nadal chciałbym użyć mave'a do wszystkich bibliotek oprócz jednego. A ten jest dostępny w maven – 3Gee

Powiązane problemy