2013-07-02 15 views
6

Próbuję utworzyć projekt Gradle zawierający projekt Storm. Aby uruchomić ten projekt na Storm, muszę najpierw utworzyć plik JAR i pozwolić Stormowi uruchomić moją topologię, np.Tworzenie plików JAR Storma tylko w projekcie Gradle

storm jar myJarFile.jar com.mypackage.MyStormMainClass 

używam do problemów, ponieważ Gradle, domyślnie jest w tym Storm Zależności zarówno w czasie kompilacji i wykonywania. To powoduje, że następujący wyjątek:

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

Wyjątek podana jest rzeczywiście pomocny i porad nas do przyczyn problemu. Rozwiązaniem jest uwzględnienie zależności Storm podczas kompilacji z Gradle, ale nie podczas generowania końcowego pliku JAR.

Czy ktoś wie, jak rozwiązać ten problem? Pozostałe posty w StackOverflow nie rozwiązały problemu. Jeśli wkleisz kod, upewnij się, że faktycznie działa.

Dzięki!

+0

Daj nam znać, czy Twoje pytanie zostało wysłuchane. –

Odpowiedz

1

Poniżej przytoczę an answer of mine do similar thread on the storm-user mailing list.

W moim przypadku zdecydowałem się użyć w tym celu fatJar plugin dla Gradle.

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 
     } 
    } 
} 

budować słoik tłuszczu poprzez:

$ gradle clean fatJar 

Best, Michael

PS: Na co warto również na blogu o tym, jak rozwiązać ten problem w sposób opisany powyżej w Running a Multi-Node Storm Cluster. Ten post zawiera dodatkowe informacje i sugestie, które mogą ci pomóc lub Ci się nie przydadzą.

+0

+1 za niesamowite napisy na swoim blogu. Czy wiesz, jakie inne JAR można wykluczyć? Chciałbym przyciąć mój tłusty słoik, ponieważ wygląda teraz na trochę za grubo ... –

+0

Do tej pory wykluczyłem jedynie zależność od burzy, dlatego w oparciu o moje własne praktyczne doświadczenie nie mogę ci powiedzieć, czy to można też bezpiecznie wykluczyć inne depki. –

Powiązane problemy