2017-12-19 9 views
1

sbt ermöglicht es uns, sbt-Befehle auf der Root-Projekt-Ebene auszuführen.Ausführen von sbt-Befehl auf der Meta-Build-Ebene

Wie kann ich Befehle auf der Meta-Build-Ebene ausführen? (das ist definiert in root/project/project dir)

mein Anwendungsfall ist, dass einige meiner sbt-Plugins verschiedene Versionen der gleichen Abhängigkeit haben, und die älteren Abhängigkeiten werden entfernt. Ich möchte sbt-Abhängigkeitsgraph

Antwort

1

Der richtige Weg, dies zu tun ist, sbt in root/project zu laufen. Normalerweise läuft es einfach auf root/, der Trick ist, in project zu cd und führen Sie es dort. Wenn Sie die im Meta-Build aufgelösten Bibliotheksabhängigkeiten überprüfen möchten, können Sie das sbt-Abhängigkeitsgraphen-Plugin in root/project/project/plugins.sbt hinzufügen (beachten Sie die Wiederholung von project), und dann sollten Sie dependencyBrowseGraph von der sbt-Shell aus ausführen können.

0

als Behelfslösung untersuchen, mit, ich habe die folgenden:

in der Datei root/project/plugins.sbt:

addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2") 

und in der Datei root/project/build.sbt:

(compile in Compile) := { 
    (dependencyBrowseGraph in Compile).value 
    (compile in Compile).value 
} 

Dies führt dazu, dass die Task dependencyBrowseGraph nach dem Kompilieren ausgeführt wird. Es ist mein spezifisches Problem zu lösen, aber es ist nicht sehr praktisch, also wäre es schön zu hören, was der richtige Weg ist.

1

Sie reload plugins aus dem Hauptprojekt sbt Sitzung in Zusammenhang mit dem Build-Projekt umschalten kann:

sbt:root> reload plugins 
[snip noise] 

sbt:project> show libraryDependencies 
[shows your sbt plugins from root/plugins.sbt along with their deps] 

sbt:project> reload return 
[back to the main project] 

sbt:root> 

Als Jorgenoted können Sie sbt-Abhängigkeitsgraphen in dem Meta-Build von root/project/project/plugins.sbt installieren Machen Sie es für den Build-Projektkontext von reload plugins verfügbar. Wie immer, erinnern Sie sich, dass sbt is recursive -aus dem Build-Projekt können Sie reload pluginswieder erreichen, um die Meta-Build-Ebene zu erreichen. Von dort würde show libraryDependencies beispielsweise nur sbt-Abhängigkeits-Graph von root/project/project anzeigen.

Dies ist ein schrulliger Aspekt von sbt UX meiner Meinung nach, weil es nicht gerade intuitiv ist, dass der reload Befehl der Pfad zu dieser Funktion sein würde, aber solange man diesen Teil erinnern kann, gibt help reload eine gute Zusammenfassung zum Abruf die Unterbefehle.

Ich weiß nicht, ob dies der "falsche" Weg in irgendeiner Hinsicht ist, aber ich finde es bequemer als das Ändern von Verzeichnissen, da ich keine weitere sbt Sitzung starten muss, und kann hin und her oder recurse weiter ohne Neustart.

Verwandte Themen