你的位置:首页 > Java教程

[Java教程][Apache Maven Shade Plugin] [example] [001] 官方例子:includes


 链接地址:[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>*:</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.

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