程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [Apache Maven Shade Plugin] [example] [001] 官方例子:includes-excludes,mavenshadeplugin

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

編輯:JAVA綜合教程

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


 鏈接地址:[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.

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved