2013-07-05 6 views
9

背景:当社にはいくつかのPlayがあります!アプリは社内のCIでテストが実行されています。各Playアプリケーションは、http経由でさまざまな公開リポジトリからの依存関係を取得します。これは理想的ではありません(内部Nexusリポジトリをバイパスします)が、耐え難いことです。新しいCIの容量を追加し、新しいマシンがファイアウォールの外側にアクセスできるようにしたくありません。例ではプレイリストからすべてのデフォルトリゾルバを削除する方法応用?

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-1は、Mavenのセントラル、タイプセーフをプロキシ社内ネクサスホストであり、他のリポジトリ)

Maven Central(Guavaなど)やTypesafeのリポジトリ(Playメーラープラグインなど)からいくつかの依存関係を削除してplay compileを実行すると、依存関係がまだ存在しないことが出力からわかりますグラムrepo.typesafe.comrepo1.maven.orgから取得:Scalaの2.9.1、2.0.1を再生、SBT 0.11.3:問題を化合物に

[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) 

、我々はまた、上のすべての少し古いバージョンです。


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

答えて

3

を編集または作成し/home/YOUR_HOME/.sbt/repositoriesは 次の行を追加します。 -Dsbt.override.build.repos =真

:実行中のプレイは、このパラメータを追加

[repositories] local my-maven-proxy-releases: http://nexus_domain_or_ip:8081/nexus/content/groups/public/

例:activator run -Dsbt.override.build.repos = true

これにより、プロジェクト構成で定義されたリポジトリの再生が再生されなくなります。

詳細はthisを参照してください。

+1

これは私のものより良い答えです。このメソッドを使用すると、プロジェクトのビルドファイル内のリポジトリリストは、真のリポジトリを指し示す「真」のままになります。個人は、独自のプロキシリポジトリに基づいて上書きを選択できます。 – Grundlefleck

+0

私はLogamを研究するときにこのアプローチを試みましたが、不運にもうまくいきません。私はなぜsbtがMavenの設定をGradleとして簡単にサポートしているのではないのですか? – Hantsy

4

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

質問に記載されているコードは、ビルドの設定を生成していますが、どこにも割り当てていません。私はresolversキーのグローバル設定を:=に置き換えたと信じましたが、そうではありません。 project/Build.scalaに次のように置く

は、当社の内部ネクサスから依存関係を解決するためにプレイアプリを強制的に:その後、プロジェクトの設定に追加された新しいヴァルへresolvers :=の結果を代入

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 main = PlayProject(...) 
    .settings(nexusResolvers: _*) 

は、効果がなかった設定のsbtResolverexternalResolvers部品を処分しました。

関連する問題