使用maven-shade-plugin插件打可执行jar包
来源:互联网 发布:js中使用contextpath 编辑:程序博客网 时间:2024/05/09 21:46
背景:
现在基本上都是采用maven来进行开发管理,我有一个需求是需要把通过maven管理的java工程打成可执行的jar包,这样也就是说必需把工程依赖的jar包也一起打包。而使用maven默认的package命令构建的jar包中只包括了工程自身的class文件,并没有包括依赖的jar包。所以根本不能执行。但我们可以通过配置插件来对工程进行打包。
步骤:
1、通过maven-assembly-plugin插件打包会出现一些问题,在此不讨论,参见:http://chenzhou123520.iteye.com/blog/1706242
我们推荐使用maven-shade-plugin,shade插件打包时在对spring.schemas文件处理上,它能够将所有jar里的spring.schemas文件进行合并,在最终生成的单一jar包里,spring.schemas包含了所有出现过的版本的集合,要使用shade插件,必须在pom进行如下配置,在<project>下面添加:
<build><resources><resource><directory>src/main/resources</directory></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.handlers</resource></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.schemas</resource></transformer></transformers><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters></configuration></execution></executions></plugin></plugins></build>
其中类似于下面这段,意思是把spring.handlers文件以append方式加入到构建的jar包中,spring.schemas同理,这样就不会存在出现xsd找不到的情况。
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
其中<filters>里面的配置项意思是在构建jar包时将META-INF目录下的SF、DSA、RSA文件排除在外,即不会包含在jar包里面。
2、配置完pom后,调用mvn clean install命令进行构建,构建成功后打开工程target目录,发现生成了2个jar包,一个为:original-XXX-0.0.1-SNAPSHOT.jar,另一个为:XXX-0.0.1-SNAPSHOT.jar,其中original...jar里只包含了工程自己的class文件,而另外的一个jar包则包含了工程本身以及所有依赖的jar包的class文件。我们只需要使用第二个jar包就可以了。
指定执行的main方法参见http://blog.csdn.net/xun_2008/article/details/16832151
- 使用maven-shade-plugin插件打可执行jar包
- 使用 maven-shade-plugin打可执行jar包
- 使用maven-shade-plugin构建可执行jar
- 使用maven-jar-plugin打可执行jar包
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- 使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- 通过maven-shade-plugin插件打可以独立运行的jar包
- maven-shade-plugin打Jar包的相关问题
- maven assembly打出的独立可执行jar包找不到xml schema解决,使用shade插件
- Java之——使用 maven 插件 maven-shade-plugin 对可执行 java 工程及其全部依赖 jar 进行打包
- maven打可执行jar包的插件
- 使用maven shade plugin打包uber jar包
- maven-compiler-plugin插件打jar包
- maven配置生成可执行的jar:maven-shade-plugin
- maven配置生成可执行的jar:maven-shade-plugin
- maven配置生成可执行的jar:maven-shade-plugin
- 使用maven-shade-plugin构建可执行jar 解决junit4测试问题 maven项目
- TF package 介绍
- innodb事务的实现
- RGB与LAB优化互转
- Ubuntu 14.04 LTS 搭建 VPN 服务器
- linux下安装svn客户端
- 使用maven-shade-plugin插件打可执行jar包
- (转)为什么LISP语言如此先进?
- github添加多个账号
- 自适应学习率调整:AdaDelta
- 2. Tomcat 系统架构与设计模式(下): 设计模式分析
- 开发者每日几问
- git代码审核流程
- python自动化测试adb+instruments
- Android Studio导入项目卡在Building gradle project info的解决办法