web-dev-qa-db-ja.com

SBTで更新されたGit依存関係アーティファクトを更新するにはどうすればよいですか?

この質問はここ に対する私の回答に従って、GitHubプロジェクトを依存関係として取り込むようにSBT(0.11.0)を構成しました。

更新されたときにSBTにGit依存関係を再コンパイルさせることができないように見えることを除いて、正常に動作します。つまり、依存関係を更新した場合、GitにプッシュしてプロジェクトのSBTをリロードしてpackageを実行すると、SBTはプロジェクトのコンパイル時に外部Git依存関係を再コンパイルしません。

Git依存関係(たとえば、forcenew)に新しいブランチを作成し、これを使用するようにSBTプロジェクト構成のブランチを更新しようとしました。

lazy val depProject = RootProject(uri("git://github.com/me/dep-project.git#forcenew"))

しかし、これでも更新は強制されません。私は少し困惑しています-SBTがGitプロジェクトをコンパイルする場所を見つけることさえできません(それは~/.sbt/または~/.ivy2/にないようです)...

どんな助けも大歓迎です!

27
Alex Dean

差出人: https://github.com/sbt/sbt/issues/335

これは0.12.0で修正する必要があります。「sbt update」を呼び出すだけです。

0.12.0で修正されたため、sbt updateで十分です ただし、13.0に戻りました -今のところ、~/.sbt/staging/から依存関係を手動で消去する必要があります

20
Somatik

~/.sbt/staging/を清算したい可能性があります

9
Adam Klein

Build.sbtに追加できる簡単なハック:

def removegit = Command.command("removegit"){state =>
  val home = sys.env("HOME")
  val k = ("rm -rf "+ home + "/.sbt/0.13/staging/").!
  state
}

commands ++= Seq(removegit)

そして、sbt removegitはそのディレクトリをワイプします。これは、コミットのチェックのような賢いことは何もしません。これは素晴らしいアップグレードになります...リポジトリは私のマシンの~/.sbt/0.13/staging/に保存されているので、調整する必要があるかもしれません。

4
Destry