mvn生成runnablejar 的方法

1、生成runnable jar,但是最后并不是一个可执行的jar 而是一个目录

主要使用 三个插件 将所需要的资源拷贝到 /target/Crunchify目录下,注意并没有生成一个jar中去

maven-resources-pluginmaven-dependency-plugin & maven-jar-plugin to generate your complete executable Jar Project? As a result it creates / copies all required files to /target/Crunchify folder.

几点说明:

  1. CrunchifyMavenBuildPlugins is a Maven Project. If you have Java project and wanted to convert it into Maven project then follow this tutorial.
  2. We do have two folders. src and resources.
  3. Inside resources folder we do have a folder called Scripts which contains one executableshell script file.
  4. CrunchifyMain.java is a main starting point which has main(String args[]) method inside.
  5. pom.xml file in which we will add Maven Plugins which will build executable .jar project with all included dependancies

pom文件如下:注意build标签下的3个plugins<build>

 1   <pluginManagement>
 2             <plugins>
 3                 <plugin>
 4                     <groupId>org.apache.maven.plugins</groupId>
 5                     <artifactId>maven-compiler-plugin</artifactId>
 6                     <version>2.3.1</version>
 7                     <configuration>
 8                         <source>1.7</source>
 9                         <target>1.7</target>
10                     </configuration>
11                 </plugin>
12             </plugins>
13         </pluginManagement>
14         <plugins>

 <!--说明:The Resources Plugin 会将project resources拷贝到输出目录.project resources are the resources associated to the main source code--><plugin><artifactId>maven-resources-plugin</artifactId><version>2.6</version>
 <executions>
 <execution>
 <id>copy-resources</id>
<phase>validate</phase>
<goals>
 <goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/Crunchify</outputDirectory>
 <resources>
<resource>
<directory>resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
 <!--说明:The dependency plugin provides the capability to manipulate artifacts. It can copy and/or unpack artifacts from local or remote repositories to a specified location-->
                <executions>
                     <execution>
                         <id>copy-dependencies</id>
                         <phase>prepare-package</phase>
                         <goals>
                             <goal>copy-dependencies</goal>
                         </goals>
                        <configuration>
                             <outputDirectory>${project.build.directory}/Crunchify/lib</outputDirectory>
                             <overWriteReleases>false</overWriteReleases>
                             <overWriteSnapshots>false</overWriteSnapshots>
                             <overWriteIfNewer>true</overWriteIfNewer>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
 <!-- This plugin provides the capability to build and sign jars.-->
                 <configuration>
                     <archive>
                         <manifest>
                             <addClasspath>true</addClasspath>
                             <classpathPrefix>lib/</classpathPrefix>
                             <mainClass>com.crunchify.tutorial.CrunchifyMain</mainClass>
                         </manifest>
                         <manifestEntries>
                             <Class-Path>.</Class-Path>
                         </manifestEntries>
                     </archive>

                     <finalName>Crunchify/Crunchify</finalName>
                 </configuration>
             </plugin>
         </plugins>
     </build>

最后看看结果

2、生成到一个jar包中,这个时候需要在插件maven-shade-plugin上做文章,主要用到的技术是 Resource Transformers

主要看下pom文件

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3     <modelVersion>4.0.0</modelVersion>
  4     <groupId>CrunchifyMavenBuildPlugins</groupId>
  5     <artifactId>CrunchifyMavenBuildPlugins</artifactId>
  6     <version>0.0.1-SNAPSHOT</version>
  7     <name>CrunchifyMavenBuildPlugins</name>
  8
  9     <properties>
 10         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 11     </properties>
 12
 13     <dependencies>
 14         <dependency>
 15             <groupId>log4j</groupId>
 16             <artifactId>log4j</artifactId>
 17             <version>1.2.17</version>
 18         </dependency>
 19         <dependency>
 20             <groupId>com.googlecode.json-simple</groupId>
 21             <artifactId>json-simple</artifactId>
 22             <version>1.1</version>
 23         </dependency>
 24         <dependency>
 25             <groupId>axis</groupId>
 26             <artifactId>axis</artifactId>
 27             <version>1.4</version>
 28         </dependency>
 29         <dependency>
 30             <groupId>commons-beanutils</groupId>
 31             <artifactId>commons-beanutils</artifactId>
 32             <version>1.8.3</version>
 33         </dependency>
 34         <dependency>
 35             <groupId>commons-collections</groupId>
 36             <artifactId>commons-collections</artifactId>
 37             <version>3.2.1</version>
 38         </dependency>
 39         <dependency>
 40             <groupId>commons-configuration</groupId>
 41             <artifactId>commons-configuration</artifactId>
 42             <version>1.10</version>
 43         </dependency>
 44         <dependency>
 45             <groupId>commons-io</groupId>
 46             <artifactId>commons-io</artifactId>
 47             <version>2.4</version>
 48         </dependency>
 49         <dependency>
 50             <groupId>javax.mail</groupId>
 51             <artifactId>mail</artifactId>
 52             <version>1.4.7</version>
 53         </dependency>
 54         <dependency>
 55             <groupId>javax.servlet</groupId>
 56             <artifactId>servlet-api</artifactId>
 57             <version>2.5</version>
 58         </dependency>
 59         <dependency>
 60             <groupId>org.json</groupId>
 61             <artifactId>json</artifactId>
 62             <version>20140107</version>
 63         </dependency>
 64         <dependency>
 65             <groupId>axis</groupId>
 66             <artifactId>axis-saaj</artifactId>
 67             <version>1.4</version>
 68         </dependency>
 69         <dependency>
 70             <groupId>wsdl4j</groupId>
 71             <artifactId>wsdl4j</artifactId>
 72             <version>1.6.3</version>
 73         </dependency>
 74         <dependency>
 75             <groupId>com.google.zxing</groupId>
 76             <artifactId>core</artifactId>
 77             <version>2.0</version>
 78         </dependency>
 79     </dependencies>
 80
 81     <build>
 82         <pluginManagement>
 83             <plugins>
 84                 <plugin>
 85                     <groupId>org.apache.maven.plugins</groupId>
 86                     <artifactId>maven-compiler-plugin</artifactId>
 87                     <version>2.3.1</version>
 88                     <configuration>
 89                         <source>1.7</source>
 90                         <target>1.7</target>
 91                     </configuration>
 92                 </plugin>
 93             </plugins>
 94         </pluginManagement>
 95         <plugins>
 96             <plugin>
 97                 <groupId>org.apache.maven.plugins</groupId>
 98                 <artifactId>maven-shade-plugin</artifactId> <!-- 主要使用了Resource Transformers 做 Aggregating classes/resourcesfrom several artifacts into one jar-->
 99                 <version>1.7</version>
100                 <executions>
101                     <execution>
102                         <phase>package</phase>
103                         <goals>
104                             <goal>shade</goal>
105                         </goals>
106                         <configuration>
107                             <!-- Optional Start -->
108                             <finalName>Crunchify</finalName>
109                             <shadedArtifactAttached>true</shadedArtifactAttached>
110                             <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
111                             <!-- Optional End -->
112
113                             <transformers>
114                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
115                                     <mainClass>com.crunchify.tutorial.CrunchifyMain</mainClass>
116                                 </transformer>
117                                 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
118                                   <resource>META-INF/spring.handlers</resource>
119                                 </transformer>
120                                 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
121                                          <resource>META-INF/spring.schemas</resource>
122                                 </transformer>
123                                 <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
124                                    <resource>META-INF/spring.tooling</resource>
125                                 </transformer>
126                             </transformers>
127                         </configuration>
128                     </execution>
129                 </executions>
130             </plugin>
131
132         </plugins>
133     </build>
134 </project>
时间: 2024-10-25 16:42:41

mvn生成runnablejar 的方法的相关文章

python直接生成exe的方法

一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序.py2exe是发布在开源许可证下的.目前只有python2.x的才有对应版本的.二.安装py2exe 从http://prdownloads.sourc

JavaScript随机生成颜色的方法

JavaScript随机生成颜色的方法 这篇文章主要介绍了JavaScript随机生成颜色的方法的相关资料,非常不错,代码简单易懂,具有参考借鉴价值,需要的朋友可以参考下 废话不多说了直接给大家贴js代码了,具体代码如下所述: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <!DOCTYPE html> <html>

Java项目 使用MyEclipse打包生成jar文件方法

使用MyEclipse打包生成jar文件方法 1.  鼠标右键单击要打包的项目 2.  在打开的窗口中选择对应的项目,(java 普通程序对应java:web项目对应) 3. 4.默认设置 点击Next 5. 6. 7. 8.文件打包完成:

在WPF下快速生成线的方法

如果线较多时,在画布中用Path或Line生成时会比较慢.用DrawingVisual可以快速生成,这个在之前我的博客中已经提到.但在类库形式下生成的无法看到,保存成Image后再加入图层后成功显示.   DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); Pen pen = new Pen(Brushes.DarkGray,

.net又一个生成缩略图的方法,不变形

生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 1 /// <summary> 2 /// 为图片生成缩略图 by 何问起 3 /// </summary> 4 /// <param name="phyPath">原图片的路径</param> 5 /// <param name="width">缩略图宽</param> 6 ///

常用的生成客户端脚本方法

常用的生成客户端脚本方法: RegisterArraryDeclaration -- 添加javascript数组     RegisterClientScriptBlock-- 在 Web 窗体的开始处(紧接着 <form runat="server"> 标识之后)    RegiserStartScript-- ------- 在</form>前添加script代码块 RegisterStartupScript-- 在 Web 窗体的结尾处    Regis

生成验证码的方法集合(一)

用户在注册或登录时,为了进一步保证安全性,越来越多的网站开始采用动态生成的图形码或附加码进行验证.验证码技术就是在服务器端生成一个随机数,并将其保存在内存中,然后将随机数写入设计好的图片中,发送给浏览器,并以图片形式显示给最终用户.前几天,在完成一个利用Script进行用户注册及登录的验证时,在加入验证码这一块的时候,发现了各种生成验证码的方式,就利用空余时间做了一个整理及重写.那么我的博客之旅就从这篇验证码的生成开始了. 下面主要是几种不同的生成验证码的方式: 1.绘制纯数字的网站验证码 本实

Oracle中生成uuid的方法

Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_

oracle手工生成AWR报告方法记录

AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定.问题SQL发现的重要手段.熟练掌握AWR报告,是做好开发.运维DBA工作的重要基本功. AWR报告的原理是基于Oracle数据库的定时镜像功能.默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中.生成AWR报告时,只需要指定进行分析的时间段(开始镜像编号和结束镜像编号),就可以生成该时间段的性能分析情况.AWR镜像保存在数据库中的时间为一个月左右