2013-07-02 6 views
6

Stormプロジェクトを含むGradleプロジェクトを構築しようとしています。 Stormでこのプロジェクトを実行するには、まずJARファイルを作成し、Stormに自分のトポロジを実行させる必要があります。Storm JARをコンパイル時に作成するのは、Gradleプロジェクトでのみです

storm jar myJarFile.jar com.mypackage.MyStormMainClass 

デフォルトでは、Gradleはコンパイル時と実行時の両方でStormの依存関係を含むため、問題が発生しています。

Exception in thread "main" java.lang.RuntimeException: Found multiple defaults.yaml resources. You're probably bundling the Storm jars with your topology jar. 

与えられた例外は、実際に役に立つ、そして、問題の根本原因へのヒント私たちをオフ:これは、次の例外が発生します。解決策は、Gradleを使用してコンパイルするときにStormの依存関係を含めることですが、最終的なJARファイルを生成するときは含めないことです。

誰でもこれを解決する方法を知っていますか? StackOverflowの他の投稿は問題を解決しませんでした。コードを貼り付ける場合は、実際に実行するようにしてください。

ありがとうございます!

+0

質問が回答されたかどうかをお知らせください。 –

答えて

1

以下は、an answer of mineからsimilar thread on the storm-user mailing listまで引用しています。

私のケースでは、その目的でGradleにfatJar pluginを使用することを選択しました。

buildscript { 
    repositories { 
     mavenCentral() 
     mavenRepo url: "http://clojars.org/repo" 
    } 
    dependencies { 
     // see https://github.com/musketyr/gradle-fatjar-plugin 
     classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1' 
    } 
} 

// When using this plugin you can build a fat jar/uberjar with 'gradle fatJar' 
apply plugin: 'fatjar' 

dependencies { 
    compile 'storm:storm:0.8.2', { 
     ext { 
      fatJarExclude = true 
     } 
    } 
} 

あなたは経由して脂肪のjarファイルを構築:

$ gradle clean fatJar 

ベスト、 マイケル

PS:それは私もRunning a Multi-Node Storm Clusterで前述したように、この問題を解決する方法についてブログ価値がある何のため。その投稿には、あなたに役立つかもしれないし、そうでないかもしれない追加の情報や落とし穴が含まれています。

+0

+1あなたのブログの素晴らしい書き込みの+1。どのような他のJARを除外できるのか分かりますか?今ではあまりにも太っているように見えるので、私は太った瓶を整えるのが大好きです... –

+0

これまでのところ、私は嵐の依存関係自体を除外していました。したがって、私自身の実践的な経験に基づいて、他のdepsも除外することは安全です。 –

関連する問題