storm maven-shade-plugin

 

 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>


原文地址:https://www.cnblogs.com/tonggc1668/p/7942906.html