私は、SBTが通常必要とするすべてのオンラインリポジトリにプロキシ経由でアクセスすることのない非常に安全な場所でプロジェクトに取り組んでいます。一度必要となる依存関係や推移的な依存関係を取得したいと考えています。sbtが一度必要なすべてをフェッチする方法
sbtは、プロジェクトが一度必要とするすべての依存関係を強制的にフェッチし、そこからオフラインでのみ作業できますか?私は家でそれを正確にやってみました。行くとオンラインのすべてをフェッチしようとする...痛みですsbt "set offline := true" run
で実行した場合でも
~/.ivy2/cache
~/.ivy2/local
$ACTIVATOR_HOME/repository
まだSBT
:私は、下にあるすべてのものの上にコピーされました。それから、最終的に壊れて、それがいくつかの依存関係を見つけることはないと不平を言う。
UPDATE:別の問題の原因に気付きましたが、OPの壊れたビルドの問題の原因であるとはまだ結論できません。私はビルドして、Linux(Ubuntuボックス)からプロジェクトの依存関係を取得してから、すべてのファイルを企業のWindows 7 Pro環境にコピーします。私は、~/.ivy2/cache
の下にある多くのプロパティファイルが、Ubuntuのアクティベータリポジトリディレクトリの絶対パスを参照していることを発見しました。これはもちろん、Windows環境では間違っています。
#ivy cached data file for ch.qos.logback#logback-classic;1.1.3
#Fri Mar 10 08:39:37 CET 2017
artifact\:ivy\#ivy.original\#xml\#-1844423371.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy\#xml\#1016118566.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/ivys/ivy.xml
artifact\:ivy\#ivy.original\#xml\#-1844423371.is-local=true
artifact\:ivy\#ivy\#xml\#1016118566.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.is-local=true
artifact\:logback-classic\#jar\#jar\#804750561.location=/opt/dev/activator/1.3.12/repository/ch.qos.logback/logback-classic/1.1.3/jars/logback-classic.jar
artifact\:ivy\#ivy.original\#xml\#-1844423371.exists=true
artifact\:logback-classic\#jar\#jar\#804750561.exists=true
私は行って検索して置き換えましたが、ビルドはまだ動作しません。何千ものプロパティファイルがアクチベータの場所への絶対パスをハードコーディングするという素晴らしいアイデアのようには見えません。むしろ、環境変数を使用する方が好きです。
あなたの依存関係は「SNAPSHOT」と表示されていますか? '〜/ .ivy2/cache'の全体的なポイントは、すべてのためにインターネットに行くことを避けることです。それは私にあなたがこの行動を覆すために何かをやっていると思うようになります。 – wheaties
@wheaties、あなたの助けてくれてありがとう!いいえ、「SNAPSHOT」は少なくとも直接的ではなく、リリースされたバージョンでは失敗しますが、元のPCは動作します。 –
LinuxボックスからWindowsボックスに何かをコピーして貼り付けた場合、以下を実行することをお勧めします: 'sbt clean'。はい、私が知っているのは、あなたが避けようとしていることですが、フォルダ構造とセットアップはOS全体で静的であると想定されるべきではないことに留意してください。 – wheaties