storm-core pom
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> <configuration> <keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope> <promoteTransitiveDependencies>false</promoteTransitiveDependencies> <createDependencyReducedPom>true</createDependencyReducedPom> <minimizeJar>false</minimizeJar> <artifactSet> <includes> <include>ns-tracker:ns-tracker</include> <include>hiccup:hiccup</include> <include>ring:*</include> <include>compojure:compojure</include> <include>clj-time:clj-time</include> <include>org.apache.thrift:*</include> <include>io.netty:netty</include> <include>com.google.guava:guava</include> <include>org.apache.httpcomponents:http*</include> <include>org.apache.zookeeper:zookeeper</include> <include>org.apache.curator:*</include> <include>com.twitter:carbonite</include> <include>com.twitter:chill-java</include> <include>org.tukaani:xz</include> <include>org.yaml:snakeyaml</include> <include>org.jgrapht:jgrapht-core</include> <include>org.apache.commons:commons-exec</include> <include>org.apache.commons:commons-compress</include> <include>commons-collections:commons-collections</include> <include>org.apache.hadoop:hadoop-auth</include> <include>commons-io:commons-io</include> <include>commons-codec:commons-codec</include> <include>commons-fileupload:commons-fileupload</include> <include>commons-lang:commons-lang</include> <include>com.googlecode.json-simple:json-simple</include> <include>org.clojure:math.numeric-tower</include> <include>org.clojure:tools.cli</include> <include>org.clojure:tools.logging</include> <include>org.clojure:tools.macro</include> <include>org.clojure:java.jmx</include> <include>joda-time:joda-time</include> <include>org.eclipse.jetty:*</include> <include>com.fasterxml.jackson.core:*</include> <include>com.fasterxml.jackson.dataformat:*</include> <include>clout:clout</include> <include>org.clojure:tools.namespace</include> <include>cheshire:cheshire</include> <include>org.clojure:core.incubator</include> <include>metrics-clojure:*</include> </includes> </artifactSet> <relocations> <relocation> <pattern>cheshire</pattern> <shadedPattern>org.apache.storm.shade.cheshire</shadedPattern> </relocation> <relocation> <pattern>clojure.tools.logging</pattern> <shadedPattern>org.apache.storm.shade.clojure.tools.logging</shadedPattern> </relocation> <relocation> <pattern>clojure.core.incubator</pattern> <shadedPattern>org.apache.storm.shade.clojure.core.incubator</shadedPattern> </relocation> <relocation> <pattern>clojure.tools.namespace</pattern> <shadedPattern>org.apache.storm.shade.clojure.tools.namespace</shadedPattern> </relocation> <relocation> <pattern>clout</pattern> <shadedPattern>org.apache.storm.shade.clout</shadedPattern> </relocation> <relocation> <pattern>compojure</pattern> <shadedPattern>org.apache.storm.shade.compojure</shadedPattern> </relocation> <relocation> <pattern>ns_tracker</pattern> <shadedPattern>org.apache.storm.shade.ns_tracker</shadedPattern> </relocation> <relocation> <pattern>ns-tracker</pattern> <shadedPattern>org.apache.storm.shade.ns-tracker</shadedPattern> </relocation> <relocation> <pattern>hiccup</pattern> <shadedPattern>org.apache.storm.shade.hiccup</shadedPattern> </relocation> <relocation> <pattern>ring</pattern> <shadedPattern>org.apache.storm.shade.ring</shadedPattern> </relocation> <relocation> <pattern>clj_time</pattern> <shadedPattern>org.apache.storm.shade.clj_time</shadedPattern> </relocation> <relocation> <pattern>clj-time</pattern> <shadedPattern>org.apache.storm.shade.clj-time</shadedPattern> </relocation> <relocation> <pattern>com.fasterxml</pattern> <shadedPattern>org.apache.storm.shade.com.fasterxml</shadedPattern> </relocation> <relocation> <pattern>org.apache.thrift</pattern> <!-- This pattern is inconsistent for backwards compatibility purposes. --> <shadedPattern>org.apache.storm.thrift</shadedPattern> </relocation> <relocation> <pattern>org.jboss.netty</pattern> <shadedPattern>org.apache.storm.shade.org.jboss.netty</shadedPattern> </relocation> <relocation> <pattern>com.google.common</pattern> <shadedPattern>org.apache.storm.shade.com.google.common</shadedPattern> </relocation> <relocation> <pattern>com.google.thirdparty</pattern> <shadedPattern>org.apache.storm.shade.com.google.thirdparty</shadedPattern> </relocation> <relocation> <pattern>org.apache.http</pattern> <shadedPattern>org.apache.storm.shade.org.apache.http</shadedPattern> </relocation> <relocation> <pattern>org.apache.curator</pattern> <shadedPattern>org.apache.storm.shade.org.apache.curator</shadedPattern> </relocation> <relocation> <pattern>org.apache.zookeeper</pattern> <shadedPattern>org.apache.storm.shade.org.apache.zookeeper</shadedPattern> </relocation> <relocation> <pattern>org.apache.jute</pattern> <shadedPattern>org.apache.storm.shade.org.apache.jute</shadedPattern> </relocation> <relocation> <pattern>carbonite</pattern> <shadedPattern>org.apache.storm.shade.carbonite</shadedPattern> </relocation> <relocation> <pattern>com.twitter.chill</pattern> <shadedPattern>org.apache.storm.shade.com.twitter.chill</shadedPattern> </relocation> <relocation> <pattern>org.tukaani.xz</pattern> <shadedPattern>org.apache.storm.shade.org.tukaani.xz</shadedPattern> </relocation> <relocation> <pattern>org.yaml.snakeyaml</pattern> <shadedPattern>org.apache.storm.shade.org.yaml.snakeyaml</shadedPattern> </relocation> <relocation> <pattern>org.jgrapht</pattern> <shadedPattern>org.apache.storm.shade.org.jgrapht</shadedPattern> </relocation> <relocation> <pattern>org.fusesource</pattern> <shadedPattern>org.apache.storm.shade.org.fusesource</shadedPattern> </relocation> <relocation> <pattern>com.metamx.http.client</pattern> <shadedPattern>org.apache.storm.shade.com.metamx.http.client</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.io</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.io</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.compress</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.compress</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.codec</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.codec</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.fileupload</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.fileupload</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.exec</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.exec</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.lang</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.lang</shadedPattern> </relocation> <relocation> <pattern>org.apache.commons.collections</pattern> <shadedPattern>org.apache.storm.shade.org.apache.commons.collections</shadedPattern> </relocation> <relocation> <pattern>org.json.simple</pattern> <shadedPattern>org.apache.storm.shade.org.json.simple</shadedPattern> </relocation> <relocation> <pattern>clojure.math</pattern> <shadedPattern>org.apache.storm.shade.clojure.math</shadedPattern> </relocation> <relocation> <pattern>clojure.tools.cli</pattern> <shadedPattern>org.apache.storm.shade.clojure.tools.cli</shadedPattern> </relocation> <relocation> <pattern>cljs.tools.cli</pattern> <shadedPattern>org.apache.storm.shade.cljs.tools.cli</shadedPattern> </relocation> <relocation> <pattern>clojure.tools.macro</pattern> <shadedPattern>org.apache.storm.shade.clojure.tools.macro</shadedPattern> </relocation> <relocation> <pattern>org.joda.time</pattern> <shadedPattern>org.apache.storm.shade.org.joda.time</shadedPattern> </relocation> <relocation> <pattern>org.eclipse.jetty</pattern> <shadedPattern>org.apache.storm.shade.org.eclipse.jetty</shadedPattern> </relocation> <relocation> <pattern>metrics.core</pattern> <shadedPattern>org.apache.storm.shade.metrics.core</shadedPattern> </relocation> <relocation> <pattern>metrics.counters</pattern> <shadedPattern>org.apache.storm.shade.metrics.counters</shadedPattern> </relocation> <relocation> <pattern>metrics.gauges</pattern> <shadedPattern>org.apache.storm.shade.metrics.gauges</shadedPattern> </relocation> <relocation> <pattern>metrics.histograms</pattern> <shadedPattern>org.apache.storm.shade.metrics.histograms</shadedPattern> </relocation> <relocation> <pattern>metrics.meters</pattern> <shadedPattern>org.apache.storm.shade.metrics.meters</shadedPattern> </relocation> <relocation> <pattern>metrics.reporters</pattern> <shadedPattern>org.apache.storm.shade.metrics.reporters</shadedPattern> </relocation> <relocation> <pattern>metrics.timers</pattern> <shadedPattern>org.apache.storm.shade.metrics.timers</shadedPattern> </relocation> <relocation> <pattern>metrics.utils</pattern> <shadedPattern>org.apache.storm.shade.metrics.utils</shadedPattern> </relocation> </relocations> <transformers> <transformer implementation="org.apache.storm.maven.shade.clojure.ClojureTransformer" /> </transformers> <filters> <!-- Several of these filters remove the .clj files from the shaded dependencies, even though only .clj files are in these jars. The reason for this is a bit complex, but intentional. During the build process all of the dependency .clj files are compiled down into .class files, and included in storm-core.jar. The regular shade transformer handles these in the majority of cases correctly. However, the Clojure-Transformer does not shade everything correctly all the time. Instead of spending a lot of time to get the Clojure-Transformer to parse Clojure correctly we opted to remove the .clj files from the uber jar. --> <filter><artifact>metrics-clojure:*</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:core.incubator</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>cheshire:cheshire</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:tools.logging</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:tools.namespace</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:math.numeric-tower</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:tools.macro</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>org.clojure:tools.cli</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>ns-tracker:ns-tracker</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>clout:clout</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>hiccup:hiccup</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>clj-time:clj-time</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>ring:*</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter><artifact>compojure:compojure</artifact><excludes><exclude>**/*.clj</exclude></excludes></filter> <filter> <artifact>org.apache.thrift:*</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>io.netty:netty</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>org.apache.zookeeper:zookeeper</artifact> <excludes> <exclude>LICENSE.txt</exclude> </excludes> </filter> <filter> <artifact>org.apache.commons:commons-exec</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>commons-collections:commons-collections</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>commons-io:commons-io</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>commons-codec:commons-codec</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>commons-fileupload:commons-fileupload</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>commons-lang:commons-lang</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>joda-time:joda-time</artifact> <excludes> <exclude>META-INF/LICENSE.txt</exclude> <exclude>META-INF/NOTICE.txt</exclude> </excludes> </filter> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.sf</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.dsa</exclude> <exclude>META-INF/*.RSA</exclude> <exclude>META-INF/*.rsa</exclude> <exclude>META-INF/*.EC</exclude> <exclude>META-INF/*.ec</exclude> <exclude>META-INF/MSFTSIG.SF</exclude> <exclude>META-INF/MSFTSIG.RSA</exclude> </excludes> </filter> </filters> </configuration> <dependencies> <dependency> <groupId>org.apache.storm</groupId> <artifactId>maven-shade-clojure-transformer</artifactId> <version>${project.version}</version> </dependency> </dependencies> </plugin>