当我使用maven管理工程结构时,我们的项目如果不是web项目,最终会生成一个jar文件,当我们使用java命令执行该jar文件时,不仅需要指定jar包中MainClass路径,而且还要通过脚本命令把依赖的jar包配置进去,这样非常麻烦而且使用不方便。
第一个插件是maven依赖插件配置如下:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
通过这个插件,我们在打包构建工程师,会在target目录下生成一个lib文件加,里面是该工程依赖的所有jar包。
第二个插件是maven生成jar文件插件配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<mainClass>com.my.test.Main</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
通过该配置,我们打包出来的jar包,会自动关联第三方jar包和启动类。
我们在运行时只要执行
java -jar **.jar
就可以快速执行。
我们在迁移的时候,只需要保证jar文件和lib目录在一个目录下即可。