2013-07-02 10 views
6

Sto provando a creare un progetto Gradle che contenga un progetto Storm. Per poter eseguire questo progetto su Storm, devo prima creare un file JAR e lasciare che Storm esegua la mia topologia, ad es.Creazione dei JAR di Storm durante la compilazione solo in un progetto Gradle

storm jar myJarFile.jar com.mypackage.MyStormMainClass 

Sono in esecuzione in problemi perché Gradle, per impostazione predefinita, è compresa la tempesta dipendenze sia in fase di compilazione e di runtime. Questo fa sì che la seguente eccezione:

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

L'eccezione dato è in realtà disponibile, e ci suggerimenti via alla causa principale del problema. La soluzione è includere le dipendenze di Storm durante la compilazione con Gradle, ma non quando si genera il file JAR finale.

Qualcuno sa come risolvere questo? Gli altri post su StackOverflow non hanno risolto il problema. Se si incolla il codice, assicurarsi che venga effettivamente eseguito.

Grazie!

+0

Facci sapere se la tua domanda ha avuto risposta. –

risposta

1

Qui di seguito cito an answer of mine a similar thread on the storm-user mailing list.

Nel mio caso ho optato per lo fatJar plugin per Gradle a tale scopo.

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

a costruire il vaso grasso attraverso:

$ gradle clean fatJar 

migliore, Michael

PS: Per quel che vale Ho anche bloggato su come risolvere questo problema, come descritto in precedenza in Running a Multi-Node Storm Cluster. Quel post contiene ulteriori informazioni e trucchi che potrebbero essere utili o meno a te.

+0

+1 per la fantastica recensione sul tuo blog. Sai quali altri JAR possono essere esclusi? Mi piacerebbe tagliare il mio barattolo di grasso, perché adesso sembra un po 'troppo grasso ... –

+0

Finora ho escluso solo la dipendenza di Storm stessa, quindi basandomi sulla mia esperienza pratica, non posso consigliarti se è sicuro escludere anche altre deps. –

Problemi correlati