SBT Resolvers überschreiben

In SBT gibt es die Möglichkeit resolvers und externalResolvers zu überschreiben. Auch wenn dies geschieht, werden immer vorher die Typesafe-Mirrors (die leider relativ langsam sind) verwendet. Weiters kann es vorkommen, dass ein Zugriff auf Artefakte nur über einen internen Proxy (Nexus, Artifactory,…) möglich ist.

Um das Problem zu lösen, müssen die fullResolvers überschrieben werden. Vor den gewünschten Repositories müssen projectResolver und otherResolvers verwendet werden.

In der build.sbt wird dazu folgender Eintrag ergänzt:

1
2
3
4
5
6
resolvers := Seq(
  "maven-proxy" at "https://your.artifactory/maven-proxy/",
  Resolver.url("ivy-proxy", url("https://your.artifactory/ivy-proxy/"))(Resolver.ivyStylePatterns)
)

fullResolvers := Seq(projectResolver.value) ++ otherResolvers.value ++ resolvers.value

Für mehrere Repositories bzw. bessere Lesbarkeit können für die Repository-Deklarationen auch Hilfsmethoden geschrieben werden, z.B.:

1
2
3
4
5
6
7
8
9
def maven(repoName: String, repoUrl: String): MavenRepository = repoName at repoUrl
def ivy(repoName: String, repoUrl: String): URLRepository = Resolver.url(repoName, url(repoUrl))(Resolver.ivyStylePatterns)

resolvers := Seq(
  maven("maven-proxy", "https://your.artifactory/maven-proxy/"),
  ivy("ivy-proxy", "https://your.artifactory/ivy-proxy/")
)

fullResolvers := Seq(projectResolver.value) ++ otherResolvers.value ++ resolvers.value

Änderung für alle SBT-Projekte auf dem lokalen PC

Um diese Änderung für SBT auf dem lokalen PC für alle Projekte zu übernehmen, muss das gleiche in der ~/.sbt/0.13/global.sbt hinzugefügt werden.

Konfiguration für Play-Projekte

Proxy-Repository

Für Play müssen auf dem Proxy zusätzlich zu den Standard-Maven-Repositories (https://repo1.maven.org/maven2) folgende Repositories konfiguriert werden:

maven-proxy (Maven Repository)

ivy-proxy (Ivy Repository)

Play-Projekt

Die Änderung der Resolver muss in der build.sbt sowie in der project/plugins.sbt vorgenommen werden, um diese für beide Builds zu aktivieren.

Getestet mit einem Play 2.5 Scala Projekt.

Docker als non-root User unter Fedora

Um Docker als nicht-root Benutzer unter Fedora verwenden zu können, muss der Benutzer zur Gruppe dockerroot hinzugefügt und in die Datei /etc/sysconfig/docker zur OPTIONS-Variable -G dockerroot hinzugefügt werden.

Die Gruppe dockerroot wird bei der Installation erstellt.

Fedora 21 Docker 1.5.0

Kommentar von Felix Becker am 2015-07-05 20:38:15

Sollte man nicht tun. Ein docker run --privileged kann erheblichen Schaden damit anrichten - das wäre analog zu sudo mit NOPASSWD: ALL.
Dann lieber alias docker="sudo docker".

IPv6 Privacy Extension und NetworkManager

Um die IPv6 Privacy Extension und NetworkManager gleichzeitig zu verwenden, müssen in /etc/sysctl.conf die Zeilen

1
2
3
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.nic0.use_tempaddr = 2

hinzugefügt werden, wobei nic0 mit dem Namen des Netzwerkinterfaces ersetzt werden muss.

NetworkManager liest /etc/sysctl.conf (nicht aber /etc/sysctl.d/*.conf) ein.

Um die Extension für eine bestimmte Verbindung zu aktivieren, muss die Zeile

IPV6_PRIVACY=rfc3041

in /etc/sysconfig/network-scripts/ifcfg-nic0 hinzugefügt werden (nic0 wieder mit der Verbindung ersetzen).

Bei mir entstand die Verwunderung, wieso es keine ifcfg-wlp3s0 Konfigurationsdatei gibt (wlp3s0 = Name meines WLAN-Interfaces). Das kommt daher, dass wlp3s0 keine Verbindung (sondern ein Interface) ist.

Deswegen gibt es auch für jede WLAN-Verbindung (jedes Netwerk) eine Konfiguration - auch für die Ethernet-Verbindung.

Siehe auch: