Maven と SBT の両方を取得して、インターネットに接続されている唯一のマシンであるローカルの Artifactory サーバーを使用する必要があります。サーバー、CI マシンなどは、外部の世界にアクセスできません。
特にSBTで白髪が増えました。
SBT Artifactory への接続に関する問題
0.11.[0..3] を使用すると、次の方法で Artifactory に SBT でアクセスできます。
- sbt-launcher.jar を解凍します。
- sbt.boot.properties を取得し、どこかにコピーします
- sbt.boot.properties を編集して、「ローカル」リポジトリと Artifactory サーバーのみを含めるようにします。
0.12 または 0.13 バージョンでは運がありません。ここにある指示を試してみました: https://github.com/harrah/xsbt/pull/472。だから私は次のことをしました:
- 私は自分でSBTを構築しました
- 「リポジトリ」ファイルを ~/.sbt/ に配置しました
「リポジトリ」ファイルには次が含まれます。
[repositories]
local
ivy-proxy: http://devserver:8081/artifactory/repo/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
maven-proxy: http://devserver:8081/artifactory/repo/
SBT の起動コマンドに「-Dsbt.override.build.repos=true」を含めました。これは次のようになります。
java -Xms1536m -Xmx1536m -XX:MaxPermSize=384m -XX:ReservedCodeCacheSize=192m -Dsbt.override.build.repos=true -Dsbt.global.base=/Users/amjr/.sbt/0.13.0-SNAPSHOT -jar /Users/amjr/.bin/.lib/0.13.0-SNAPSHOT/sbt-launch.jar
しかし、0.12 と 0.13 は Artifactory へのアクセスを拒否しますが、typesafe、maven central などに直接接続しようとします。
Artifactory と SBT がアクセスする際の問題点
これで、0.11 シリーズの SBT を Artifactory に接続できるようになりました。次に、SBT がプロジェクトのコンパイルに必要なパッケージを見つけられないという問題があります。次に例を示します。
==== local-artifactory-libs-snapshot: tried
http://devserver:8081/artifactory/libs-snapshot/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar
==== local-artifactory-libs-releases: tried
http://devserver:8081/artifactory/libs-release/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar
==== local-artifactory-plugins-releases: tried
http://devserver:8081/artifactory/plugins-release/org/scala-sbt/compiler-interface/0.11.3/compiler-interface-src-0.11.3.jar
これは明らかに、Artifactory の構成に関連するものである必要があります。Artifactory を SBT で正常に使用するために、Artifactory でどのように、どのリポジトリをプロキシする必要があるかについて誰かが指摘してくれれば幸いです。