您的位置:首页 > 其它

mvn生成runnablejar 的方法

2015-10-12 10:15 483 查看
主要讲3点,生成runnablejar方法1是生成一个目录方法2是直接一个runnable的jar方法3是关于包含spring工程的情况方法2和3其实是一致的

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

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

maven-resources-plugin
,
maven-dependency-plugin
&
maven-jar-plugin
togenerateyourcompleteexecutableJarProject?Asaresultitcreates/copiesallrequiredfilesto
/target/Crunchify
folder.



几点说明:

CrunchifyMavenBuildPlugins
isaMavenProject.IfyouhaveJavaprojectandwantedtoconvertitintoMavenprojectthenfollowthistutorial.

Wedohavetwofolders.
src
and
resources.


Inside
resources
folderwedohaveafoldercalled
Scripts
whichcontainsoneexecutableshellscriptfile.

CrunchifyMain.java
isamainstartingpointwhichhas
main(Stringargs[])
methodinside.

pom.xml
fileinwhichwewilladdMavenPluginswhichwillbuildexecutable.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/resources
fromseveralartifactsintoonejar-->

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>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: