10

背景: 当社にはいくつかのPlay!があります。内部 CI でテストが実行されるアプリ。各 Play アプリケーションは、http を介してさまざまなパブリック リポジトリから依存関係を取得します。これは理想的ではありませんが (内部の Nexus リポジトリをバイパスします)、耐えられます。現在、追加の CI キャパシティーを追加しており、新しいマシンがファイアウォールの外側にアクセスできるようにしたくありません。

Play アプリの例では、 の次の構成ではビルドがおよびproject/Build.scalaに進むのを防ぐには不十分です。repo.typesafe.comrepo1.maven.org

sbtResolver := "Typesafe (proxy)" at "http://repo-1/nexus/content/repositories/typesafe-releases/"

resolvers := Seq(
  "Maven Central (proxy)" at "http://repo-1/nexus/content/repositories/central/",
  "Typesafe (proxy)" at "http://repo-1/nexus/content/repositories/typesafe-releases/",
  // some more internal Nexus repositories
)

externalResolvers := Seq.empty

( repo-1Maven Central、Typesafe、およびその他のリポジトリをプロキシする内部の Nexus ホストです)

Maven Central (Guava など) または Typesafe のリポジトリ (Play メーラー プラグインなど) からいくつかの依存関係を削除して実行すると、依存関係がまだ取得されplay compileていることが出力からわかります。repo.typesafe.comrepo1.maven.org

[info] downloading http://repo.typesafe.com/typesafe/releases/com/typesafe/play-plugins-mailer_2.9.1/2.0.2/play-plugins-mailer_2.9.1-2.0.2.jar ...
[info]  [SUCCESSFUL ] com.typesafe#play-plugins-mailer_2.9.1;2.0.2!play-plugins-mailer_2.9.1.jar (981ms)
[info] downloading http://repo1.maven.org/maven2/com/google/guava/guava/12.0/guava-12.0.jar ...
[info]  [SUCCESSFUL ] com.google.guava#guava;12.0!guava.jar (1422ms)

問題をさらに悪化させているのは、Scala 2.9.1、Play 2.0.1、sbt 0.11.3 など、すべてのバージョンが少し古いことです。


内部リポジトリから排他的に依存関係を取得するよう Play アプリに強制するにはどうすればよいですか?

4

2 に答える 2

5

答えは、正しいsbt構文を使用することです。

質問に記載されているコードは、ビルドの構成を生成していますが、どこにも割り当てていません。:=キーのグローバル構成が置き換えられたと思いましたresolversが、そうではありません。

以下を配置するとproject/Build.scala、Play アプリは強制的に内部の Nexus から依存関係を解決します。

val nexusResolvers = resolvers := Seq(
  "Maven Central (proxy)" at "http://repo-1/nexus/content/repositories/central/",
  "Typesafe (proxy)" at "http://repo-1/nexus/content/repositories/typesafe-releases/",
  // some more internal Nexus repositories
)

の結果を新しい val に割り当てることに注意してくださいresolvers :=。これは、同じファイル内のプロジェクトの設定に追加されます。

val main = PlayProject(...)
  .settings(nexusResolvers: _*)

また、構成のsbtResolverexternalResolversの部分を削除しましたが、効果はありませんでした。

于 2013-07-05T14:58:58.347 に答える