2014-01-16 2 views
6

Ich habe folgenden sbt Code eine Plugin Abhängigkeit von einem git uri hinzuzufügen:Kann SBT die git uri-Abhängigkeit aktualisieren (immer oder auf Anforderung)?

import sbt._ 

object Plugins extends Build { 
    lazy val username = ("git config --global user.bitbucket" !!).trim 

    lazy val root = Project("root", file(".")) dependsOn(
    uri(s"https://[email protected]/team/build.git#build_0.1") 
) 
} 

Dies funktioniert gut, aber ich finde, dass, wenn ich Änderungen an build_0.1 machen und schieben Sie es, wenn ich zu compile komme das Projekt wieder, sbt nicht die Änderungen, die ich gemacht habe, so dass ich ein veraltetes Plugin habe.

Wie kann ich SBT bekommen, um immer einen git Pull auf die Abhängigkeiten zu machen, von denen es abhängt?

Antwort

3

SBT bis 0,13,2-M1 unterstützt nur git clone und git checkout.

git clone wird verwendet, wenn die URL # nicht enthält, um auf eine Verzweigung oder ein Festschreiben zu zeigen, z.

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo 

git checkout wird ausgeführt, wenn die URL # in der URL hat, die an einem Verzweigungspunkt oder eine commit, z.B.

git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2 

Als ich commit ‚eine Änderung an einem git Repo-ed, hatte ich die Commit Hash in build.sbt auch zu aktualisieren, um die Änderung in dem SBT-Projekt verwiesen zu haben (die val v unten).

lazy val v = "a221379c7f82e5cc089cbf9347d473ef58255bb2" 

lazy val g = RootProject(uri(s"git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#$v")) 

lazy val root = project in file(".") dependsOn g 

Mit Änderungen im Git Repository, hat das SBT-Projekt reload ‚ed so eine neue Kasse ausgeführt werden kann, sein, und das Projekt wird aktualisiert.

[root]> reload 
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins 
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-git/project 
Cloning into '/Users/jacek/.sbt/0.13/staging/24535507588417c1c2dc/git-repo'... 
Checking connectivity... done 
[info] Set current project to root (in build file:/Users/jacek/sandbox/so/sbt-git/) 
[root]> 

Es ist schmerzhaft, aber der Trick (und lassen Sie verfolgen, wo Sie mit dem Remote-git Repo sind).

Sie können auch Can multi-projects from GIT be used as SBT dependencies? nützlich finden.

Verwandte Themen