maven工程打包jar以及java jar命令的classpath使用

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了maven工程打包jar以及java jar命令的classpath使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、maven工程打包成jar文件插件。

<plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-jar-plugin</artifactId>         <version>2.3.2</version>         <configuration>             <Archive>             <manifest>                 <mainClass>com.wjl.Main</mainClass>                 <!--                 <addClasspath>true</addClasspath>                 <classpathPRefix>lib/</classpathPrefix>                  -->             </manifest>         </archive>     </configuration> </plugin>

二、打包完工程的jar和依赖都在同一目录。

maven工程打包jar以及java jar命令的classpath使用

(1)如果通过maven打包时,指定了<addClasspath>且正确。其效果完全等价于其他打包方式,自己在MANIFEST.MF指定好了Class-Path。
此时,运行的命令,直接运行jar包即可。

java -jar hello-test-0.0.1-sNAPSHOT.jar

(2)如果没有指定<addClasspath>和<classpathPrefix>,或者手动设置MANIFEST.MF。此时,即便依赖的jar包都在相同目录下,指定运行的classpath。
这个时候,容易想当然,把命令错误的写成:

//错误展示 java -cp jackson-core-asl-1.9.4.jar:jackson-mapper-asl-1.9.4.jar -jar hello-test-0.0.1-SNAPSHOT.jar 

实际上正确的写法应该是:

java -cp jackson-core-asl-1.9.4.jar:jackson-mapper-asl-1.9.4.jar:hello-test-0.0.1-SNAPSHOT.jar  com.wjl.Main

通过指定当前目录的方式,可以缩写为:

java -cp ./*:hello-test-0.0.1-SNAPSHOT.jar com.wjl.Main

三、如果运行的jar和依赖不在同一目录。

maven工程打包jar以及java jar命令的classpath使用

这个情况简单就是maven插件指定了<addClasspath>为true,同时指定了<classpathPrefix>。
这样生成的MANIFEST.MF的classpath,都会在每个jar包的路径上带上prefix,使得java命令可以找到。

如果没有这样配置,那么就要在运行命令时,指定classpath了,命令如下:

java -cp lib/*:hello-test-0.0.1-SNAPSHOT.jar com.wjl.Main

四、maven插件把依赖的所有jar包找出来

<plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-rar-plugin</artifactId>     <version>2.4</version> </plugin>

配置该插件,然后需要执行命令 mvn rar:rar 。

脚本宝典总结

以上是脚本宝典为你收集整理的maven工程打包jar以及java jar命令的classpath使用全部内容,希望文章能够帮你解决maven工程打包jar以及java jar命令的classpath使用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。