使用Maven的jar-plugin打包可执行的jar应用
把应用程序打包为可执行的
jar
。
pom.xml 配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<manifest>
<!-- 指定 main函数类 -->
<mainClass>io.springboot.netty.Server</mainClass>
<!-- MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!-- 依赖处理插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<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>
</plugins>
</build>
打包结果
target
|-lib
|-app.jar
app.jar 就是最终可执行的jar程序,lib 目录下就是当前程序运行需要的第三方依赖。这种打包方式的好处在于,可以随时任意的替换
lib
目录中的实现。而不需要重新编译,打包程序。建议自己通过shell脚本来控制应用的启动。