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

[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.

相关推荐