<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>
(1)若是经过maven打包时,指定了<addClasspath>且正确。其效果彻底等价于其余打包方式,本身在MANIFEST.MF指定好了Class-Path。
此时,运行的命令,直接运行jar包便可。java
java -jar hello-test-0.0.1-SNAPSHOT.jar
(2)若是没有指定<addClasspath>和<classpathPrefix>,或者手动设置MANIFEST.MF。此时,即使依赖的jar包都在相同目录下,指定运行的classpath。
这个时候,容易想固然,把命令错误的写成:apache
//错误展现 java -cp jackson-core-asl-1.9.4.jar:jackson-mapper-asl-1.9.4.jar -jar hello-test-0.0.1-SNAPSHOT.jar
实际上正确的写法应该是:app
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
经过指定当前目录的方式,能够缩写为:maven
java -cp ./*:hello-test-0.0.1-SNAPSHOT.jar com.wjl.Main
这个状况简单就是maven插件指定了<addClasspath>为true,同时指定了<classpathPrefix>。
这样生成的MANIFEST.MF的classpath,都会在每一个jar包的路径上带上prefix,使得java命令能够找到。spa
若是没有这样配置,那么就要在运行命令时,指定classpath了,命令以下:插件
java -cp lib/*:hello-test-0.0.1-SNAPSHOT.jar com.wjl.Main
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-rar-plugin</artifactId> <version>2.4</version> </plugin>
配置该插件,而后须要执行命令 mvn rar:rar 。code