使用Maven构建Java应用程序的多种打包方案
在日常开发中,我们经常需要将Java程序打包成可分发的格式。Maven作为主流的构建工具,提供了灵活的配置方式来满足不同的打包需求。本文将介绍几种常见的Maven打包配置方案。
方案一:打包为轻量级可执行JAR
此方案适用于程序依赖较少或依赖已在运行环境中存在的场景。打包后的JAR文件不包含第三方依赖库。
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>Application</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.demo.app.ApplicationRunner</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
方案二:打包为包含所有依赖的可执行JAR
此方案将所有依赖项打包到最终的JAR文件中,创建成为一个独立的可运行程序。只需双击或通过命令行即可直接运行。
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>Application</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.demo.app.ApplicationRunner</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>create-executable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
方案三:同时生成可引用JAR和可执行JAR
此方案会生成两个JAR文件:一个是包含清单文件的可引用JAR(用于被其他项目依赖),另一个是包含所有依赖的可执行JAR。这样既可以发布到Maven仓库供他人使用,也可以直接运行。
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>Application</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.demo.app.ApplicationRunner</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>exec</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>create-executable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
<execution>
<id>default-cli</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
执行打包操作
完成pom.xml配置后,可以通过以下方式执行打包:
使用IDE打包
在IntelliJ IDEA或Eclipse中,可以直接运行Maven的clean和package命令来完成打包。
使用命令行打包
# 在项目根目录下执行
mvn clean package
打包完成后,生成的JAR文件会存放在项目的target目录中。根据配置的方案不同,可能生成单个或多个JAR文件。
