使用Maven的jar-plugin打包可执行的jar应用

#1

使用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脚本来控制应用的启动。

0 Likes