2013-10-25 10 views
10

Wir möchten unternehmensinterne efeu/maven-repository (artefactory) verwenden, um die Geschwindigkeit der Auflösung zu verbessern und die JAR-Dateien herunterzuladen. Außerdem möchten wir damit binäre jar-Dateien zwischen verschiedenen Teams in unserer Organisation austauschen.(SBT) Wie kann man den Standard-Resolver deaktivieren und nur den firmeninternen Resolver verwenden?

Ich weiß, dass wir SBT zwingen können über Proxy gehen von ~/.repositories mit

[repositories] 
    local 
    my-ivy-proxy-releases: http://repo.alpinenow.com/artifactory/repo/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext] 
    my-maven-proxy-releases: http://repo.alpinenow.com/artifactory/repo/ 

Einstellung und dann SBT starten mit -Dsbt.override.build.repos=true. Diese Methode funktioniert für mich.

Es ist jedoch etwas umständlich, alle Entwickler auf diese Weise zu fragen. Wir fragen uns, ob wir die Standard-Resolver vollständig in Build.scala und plugin.sbt ohne zusätzliche Konfiguration überschreiben können.

Bis jetzt habe ich die folgenden Möglichkeiten ohne Erfolg versucht.

1) In beiden Build.scala und plugin.sbt, fügte ich

resolvers := "Local Repo" at "http://repo.alpinenow.com/artifactory/repo/", 

externalResolvers := Seq(Resolver.url("Local Repo", url("http://repo.alpinenow.com/artifactory/repo"))(Resolver.ivyStylePatterns)), 

aber es lädt noch die Gläser von typsicher und maven1.

2) Ich habe dann beschlossen, setzen Repositories in Projektordner-Datei und versucht, Java-Option direkt in plugin.sbt und Build.scala mit

System.setProperty("-Dsbt.override.build.repos", "true"), 

System.setProperty("-Dsbt.repository.config", "project/repositories"), 

aber es immer noch nicht funktioniert hinzuzufügen. Ich bin neugierig, wenn die SBT die Java-Optionen für Resolver bekommt, da es offensichtlich vor plugin.sbt und Build.scala ist.

Irgendeine Idee?

Danke.

DB Tsai

+0

Laut der offiziellen Dokumentation, sollte sich Ihre Repository-Konfiguration nicht in '~/.sbt/repositories', nicht' ~/.repositories' befinden? – Luciano

Antwort

2

Wenn Sie aus dem sbt-extras Shell-Skript als Ersatz für den Standard-Launcher-Skript abweichen, ich denke, man leicht, dass mit der Einrichtung ~/.repositories ändern könnte und das Hinzufügen von -Dsbt.override.build.repos=true. Dann müssen Sie nur sicherstellen, dass Ihre Entwickler dieses Skript verwenden.

+0

Ja. Wenn ich keinen Weg finde, es einfach in Build.scala usw. zu tun, werde ich wahrscheinlich das Standard-Launcher-Skript ersetzen. Aber es ist der letzte Weg, den ich machen werde. –

+0

Zu diesem Zweck verwenden wir dies als unsere Lösung. Vielen Dank. –

+0

Wo setzen Sie '-Dsbt.override.build.repos = true'? In einer Datei oder als sbt-Parameter? – pedromss

1

ich immer SBT bin Hinzufügen bauen als Teil meiner Repo in SVN/GIT, in der Nähe mit dem Code. Dann habe ich keine solchen Probleme.

Es kostet ca. 1MB Speicherplatz, ist also recht günstig und löst viele Probleme. Alle Entwickler verwenden identische Build-Tools. Selbst wenn ich versuche Continues Integration oder Advanced Continues Delivery-Prozess zu erstellen, werden alle SBT-Konfigurationen in meinem SCM bereits gut konfiguriert. Ich werde eine Quelle wahrer bekommen :)