mvn生成runnablejar 的方法
2015-10-12 10:15
483 查看
主要讲3点,生成runnablejar方法1是生成一个目录方法2是直接一个runnable的jar方法3是关于包含spring工程的情况方法2和3其实是一致的
1、生成runnablejar,但是最后并不是一个可执行的jar而是一个目录
主要使用三个插件将所需要的资源拷贝到/target/Crunchify目录下,注意并没有生成一个jar中去
几点说明:
thistutorial.
Wedohavetwofolders.
Insideshellscriptfile.
pom文件如下:注意build标签下的3个plugins<build>
最后看看结果
2、生成到一个jar包中,这个时候需要在插件maven-shade-plugin上做文章,主要用到的技术是ResourceTransformers
主要看下pom文件
99<version>1.7</version>
100<executions>
101<execution>
102<phase>package</phase>
103<goals>
104<goal>shade</goal>
105</goals>
106<configuration>
107<!--OptionalStart-->
108<finalName>Crunchify</finalName>
109<shadedArtifactAttached>true</shadedArtifactAttached>
110<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
111<!--OptionalEnd-->
112
113<transformers>
114<transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
115<mainClass>com.crunchify.tutorial.CrunchifyMain</mainClass>
116</transformer>
117<transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
118<resource>META-INF/spring.handlers</resource>
119</transformer>
120<transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
121<resource>META-INF/spring.schemas</resource>
122</transformer>
123<transformerimplementation="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>
</plugins>
</build>
</project>[/code]
3、一般的,如果是spring工程,打成可执行包的话在读取xml文件时会报错,这个时候需要在mvn中做些处理,生成一个runnable的jar,直接用mvn添加一些选项。这里其实也是使用了resoucetransform
1、生成runnablejar,但是最后并不是一个可执行的jar而是一个目录
主要使用三个插件将所需要的资源拷贝到/target/Crunchify目录下,注意并没有生成一个jar中去
maven-resources-plugin,
maven-dependency-plugin&
maven-jar-plugintogenerateyourcompleteexecutableJarProject?Asaresultitcreates/copiesallrequiredfilesto
/target/Crunchifyfolder.
几点说明:
CrunchifyMavenBuildPluginsisaMavenProject.IfyouhaveJavaprojectandwantedtoconvertitintoMavenprojectthenfollow
Wedohavetwofolders.
srcand
resources.
Inside
resourcesfolderwedohaveafoldercalled
Scriptswhichcontainsoneexecutable
CrunchifyMain.javaisamainstartingpointwhichhas
main(Stringargs[])methodinside.
pom.xmlfileinwhichwewilladdMavenPluginswhichwillbuildexecutable.jarprojectwithallincludeddependancies
pom文件如下:注意build标签下的3个plugins<build>
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <!--说明:TheResourcesPlugin会将projectresources拷贝到输出目录.projectresourcesaretheresourcesassociatedtothemainsourcecode--> <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> <!--说明:Thedependencypluginprovidesthecapabilitytomanipulateartifacts.Itcancopyand/orunpackartifactsfromlocalorremoterepositoriestoaspecifiedlocation--> <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>[b]maven-jar-plugin[/b]</artifactId> <!--Thispluginprovidesthecapabilitytobuildandsignjars.--> <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上做文章,主要用到的技术是ResourceTransformers
主要看下pom文件
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> 97<groupId>org.apache.maven.plugins</groupId> 98<artifactId>maven-shade-plugin</artifactId> <!--主要使用了ResourceTransformers做Aggregating[code]classes/resourcesfromseveralartifactsintoonejar-->
99<version>1.7</version>
100<executions>
101<execution>
102<phase>package</phase>
103<goals>
104<goal>shade</goal>
105</goals>
106<configuration>
107<!--OptionalStart-->
108<finalName>Crunchify</finalName>
109<shadedArtifactAttached>true</shadedArtifactAttached>
110<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
111<!--OptionalEnd-->
112
113<transformers>
114<transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
115<mainClass>com.crunchify.tutorial.CrunchifyMain</mainClass>
116</transformer>
117<transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
118<resource>META-INF/spring.handlers</resource>
119</transformer>
120<transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
121<resource>META-INF/spring.schemas</resource>
122</transformer>
123<transformerimplementation="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>
</plugins>
</build>
</project>[/code]
3、一般的,如果是spring工程,打成可执行包的话在读取xml文件时会报错,这个时候需要在mvn中做些处理,生成一个runnable的jar,直接用mvn添加一些选项。这里其实也是使用了resoucetransform
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>[b]maven-shade-plugin[/b]</artifactId> <version>1.7</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <finalName>pc-guess-like-fsf-app</finalName>//1、可执行jar包名字 <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>jar-with-dependencies</shadedClassifierName> <transformers> <transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.feiniu.recom.soa.consumer.pcGuessLike.FsfTest</mainClass>//2、这里是可执行jar包主类名字 </transformer> <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> <transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.tooling</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
相关文章推荐
- Android不发版也能在线修Bug?——AndFix 框架
- 华为机试:查找字符串
- 【jQuery】判断浏览器类型和版本
- 三招让你的 APP 假装“更快”
- iOS抽奖转盘动画之转场动画与动画组
- 黑马程序员——Java语言的发展史
- Android学习之 面试资料整理[2]
- c++五种内存分配、堆与栈区别
- Git Flow
- 工业相机参数之帧率相关知识详解:
- Java中的小问题
- mvc的 404 处理
- 数字媒体技术3---wangronggang
- JS部分代码分享
- 再谈Java双括弧技巧:不规范的语法?
- C# Winform窗体自动运行隐藏
- 手工配置LVS
- 一个简单的定时器删除任务
- ASP.NET中Cookie状态的说明与用法
- Android系统文件安全权限检测/system/build.prop修改