• [Apache Maven Shade Plugin] [example] [001] 官方例子:includes-excludes


     链接地址:[Selecting Contents for Uber JAR](http://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html)

    apache网站在国内打开太慢了。因此我将这些有用的资源收集起来,保存在博客中!

    Apache Maven Shade Plugin:是一个Maven打包的插件。其官网英文定义如下:This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade

    001.

     1 <project>
     2   ...
     3   <build>
     4     <plugins>
     5       <plugin>
     6         <groupId>org.apache.maven.plugins</groupId>
     7         <artifactId>maven-shade-plugin</artifactId>
     8         <version>2.4.3</version>
     9         <executions>
    10           <execution>
    11             <phase>package</phase>
    12             <goals>
    13               <goal>shade</goal>
    14             </goals>
    15             <configuration>
    16               <artifactSet>
    17                 <excludes>
    18                   <exclude>classworlds:classworlds</exclude>
    19                   <exclude>junit:junit</exclude>
    20                   <exclude>jmock:*</exclude>
    21                   <exclude>*:xml-apis</exclude>
    22                   <exclude>org.apache.maven:lib:tests</exclude>
    23                   <exclude>log4j:log4j:jar:</exclude>
    24                 </excludes>
    25               </artifactSet>
    26             </configuration>
    27           </execution>
    28         </executions>
    29       </plugin>
    30     </plugins>
    31   </build>
    32   ...
    33 </project>
    View Code

    002.

     1 <project>
     2   ...
     3   <build>
     4     <plugins>
     5       <plugin>
     6         <groupId>org.apache.maven.plugins</groupId>
     7         <artifactId>maven-shade-plugin</artifactId>
     8         <version>2.4.3</version>
     9         <executions>
    10           <execution>
    11             <phase>package</phase>
    12             <goals>
    13               <goal>shade</goal>
    14             </goals>
    15             <configuration>
    16               <filters>
    17                 <filter>
    18                   <artifact>junit:junit</artifact>
    19                   <includes>
    20                     <include>junit/framework/**</include>
    21                     <include>org/junit/**</include>
    22                   </includes>
    23                   <excludes>
    24                     <exclude>org/junit/experimental/**</exclude>
    25                     <exclude>org/junit/runners/**</exclude>
    26                   </excludes>
    27                 </filter>
    28                 <filter>
    29                   <artifact>*:*</artifact>
    30                   <excludes>
    31                     <exclude>META-INF/*.SF</exclude>
    32                     <exclude>META-INF/*.DSA</exclude>
    33                     <exclude>META-INF/*.RSA</exclude>
    34                   </excludes>
    35                 </filter>
    36               </filters>
    37             </configuration>
    38           </execution>
    39         </executions>
    40       </plugin>
    41     </plugins>
    42   </build>
    43   ...
    44 </project>
    View Code

    003.

     1 <project>
     2   ...
     3   <build>
     4     <plugins>
     5       <plugin>
     6         <groupId>org.apache.maven.plugins</groupId>
     7         <artifactId>maven-shade-plugin</artifactId>
     8         <version>2.4.3</version>
     9         <executions>
    10           <execution>
    11             <phase>package</phase>
    12             <goals>
    13               <goal>shade</goal>
    14             </goals>
    15             <configuration>
    16               <minimizeJar>true</minimizeJar>
    17             </configuration>
    18           </execution>
    19         </executions>
    20       </plugin>
    21     </plugins>
    22   </build>
    23   ...
    24 </project>
    View Code

    004.

     1 <project>
     2   ...
     3   <build>
     4     <plugins>
     5       <plugin>
     6         <groupId>org.apache.maven.plugins</groupId>
     7         <artifactId>maven-shade-plugin</artifactId>
     8         <version>2.4.3</version>
     9         <executions>
    10           <execution>
    11             <phase>package</phase>
    12             <goals>
    13               <goal>shade</goal>
    14             </goals>
    15             <configuration>
    16               <minimizeJar>true</minimizeJar>
    17               <filters>
    18                 <filter>
    19                    <artifact>log4j:log4j</artifact>
    20                    <includes>
    21                        <include>**</include>
    22                    </includes>
    23                 </filter>
    24                 <filter>
    25                    <artifact>commons-logging:commons-logging</artifact>
    26                    <includes>
    27                        <include>**</include>
    28                    </includes>
    29                 </filter>
    30               </filters>            
    31             </configuration>
    32           </execution>
    33         </executions>
    34       </plugin>
    35     </plugins>
    36   </build>
    37   ...
    38 </project>
    View Code

    (001)`Shade`官网上的介绍也不多。可能因为其相对比较简单吧。但是,我这个菜鸟仍然很头疼如何配置`Shade`。网上的资料比较少,估计也是认为比较简单吧,没人撰文详细介绍`Shade`。所以,官方提供的例子就成为最有价值的资料了。

    (002)结合`Shade`源码,我开始踏上研究如何使用的`Shade`旅程。源码的获得比较简单,为了研究`Shade`可以将其添加到pom.xml的`dependencies`中。当然也可以去官网镜像下载

    (003)研究任何`Maven Plugin`之前,都应该先看看这篇插件的介绍 [Guide to Configuring Plug-ins](http://maven.apache.org/guides/mini/guide-configuring-plugins.html),这会让你少走很多弯路(我不会告诉你我是掉坑里了爬起来才知道的)。

    (003001)在这篇官方文档里,我首次看到了`Mojo`,这是Maven Plugin使用的一个IOC框架。(当下我并没有去研究Mojo所以知道的有限也许未来会去研究下。有兴趣的朋友可以去搜索下。)

    (003002)`Mojo`中的字段是和plugin中的配置对应的,如果对例子中的配置很疑惑,就可以翻开源码中的`Mojo`顺藤摸瓜,找到它们的原理。`Shade`中的`Mojo`就是`ShadeMojo.java`了。

    (004)end.

  • 相关阅读:
    react: redux-devTools
    react: menuService
    react: navigator
    react style: 二级菜单
    spark复习笔记(5):API分析
    spark复习笔记(4):spark脚本分析
    maven 打包Scala代码到jar包
    spark复习笔记(3)
    mongoDB学习笔记(2)
    sparkStreaming复习笔记(1)
  • 原文地址:https://www.cnblogs.com/juedui0769/p/5600081.html
Copyright © 2020-2023  润新知