1

私は Scala を使用して高校のコンピューター サイエンスを教えており、Artifactory リポジトリを設定して、学生が依存関係をダウンロードするときに、インターネット経由ではなく、ほとんどのダウンロードをラボ内で行うようにしました。

ただし、すべてのホーム フォルダーはネットワーク ドライブ上にあり、学生が使用する端末には独自のハード ディスクがないため、同じ依存関係のコピーを何十も持つのはばかげているように思えます。残念ながら、Artifactory リポジトリを使用しても、SBT/Ivy はすべてのアーティファクトを各ユーザーの ~/.ivy2/cache ディレクトリにコピーします。

共有ファイルシステム リポジトリをセットアップすると、アーティファクトがコピーされないと聞いたことがあります。私が理解できないのは、Artifactory がキャッシュしたすべてのアーティファクトを、ファイルシステム リポジトリとして認識される形式でエクスポートする方法です。(通常、エクスポートすると、各リモートリポジトリが個別のフォルダーに配置されますが、これをどうにかして統合する必要があると思いますが、その方法が正確にはわかりません。それが最も簡単な方法である場合は、どのように慎重に説明してください。)

エクスポートしたいのはremote-repos仮想リポジトリですが、[エクスポート] ページでは選択できません。

これのもう 1 つの難しい部分は、プロキシ リポジトリがない自宅でも同じビルド ファイルを使用できる必要があることです/etc/sbt/sbtopts。そのため、ラボ環境内でリポジトリの解決をオーバーライドするために使用できるという事実に依存しています。

4

3 に答える 3

0

管理されていない依存関係

Ivy から抜け出すための解決策はありますか?

管理された依存関係を使用する元のビルドで、実行します

> show full-classpath

これにより、次のように表示されます。

[info]  List(Attributed(/home/foo/helloworld/target/scala-2.10/classes), Attributed(/home/foo/.ivy2/cache/com.eed3si9n/treehugger_2.10/jars/treehugger_2.10-0.3.0.jar), Attributed(/foo/.sbt/0.13.0/boot/scala-2.10.2/lib/scala-library.jar), Attributed(/home/foo/.ivy2/cache/com.github.scopt/scopt_2.10/jars/scopt_2.10-3.0.0.jar))

または何かという名前のディレクトリを作成し/shared/project1/lib、そこに上記の jar をすべてコピーしますscala-library.jar

次に、ビルドのコピーを作成libraryDependencyし、次のものに置き換えます。

unmanagedBase := file("/shared/project1/lib")

コードをコンパイルできるはずです。

于 2013-09-11T07:40:32.987 に答える
0

davfs2また、Linux で使用するか、Windows で「Web フォルダー」を使用して Artifactory を WebDAV リソース (読み取り専用) としてマウントすることもできます。これにより、ローカル ファイル システムを介した間接的な操作が回避され、そのようなコピーが最新の状態に保たれます。

于 2013-09-10T19:52:41.667 に答える