maven 的 package 命令根据 pom.xml 中的 元素决定生成 jar 或 war;默认为 jar,设为 war 则生成 war 包;需配合 maven-war-plugin 或 maven-shade-plugin 实现可执行胖 jar。

在 Maven 中,package 命令本身不直接指定生成 JAR 还是 WAR,而是根据项目的 pom.xml 中的 <packaging></packaging> 配置自动决定归档类型。
确认项目的打包类型(JAR 或 WAR)
Maven 通过 pom.xml 的 <packaging></packaging> 元素控制输出格式:
-
<packaging>jar</packaging>:默认值,执行mvn package生成target/{project-name}-{version}.jar -
<packaging>war</packaging>:需引入maven-war-plugin(通常 Spring Boot 项目用spring-boot-starter-web会自动适配),生成target/{project-name}-{version}.war
执行 package 构建命令
在项目根目录(含 pom.xml)下运行:
mvn clean package
推荐加上 clean 是为了避免旧构建产物干扰。Maven 会自动编译源码、运行测试(除非跳过)、将类和资源打包到 target/ 目录。
跳过测试快速打包(可选)
如果只想快速生成归档文件且暂不运行测试:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
mvn clean package -Dmaven.test.skip=true
注意:-Dmaven.test.skip=true 跳过编译和执行测试;若只跳过执行(仍编译测试类),用 -DskipTests。
生成可执行 JAR(含依赖)
普通 jar 打包不包含依赖,运行时会报 NoClassDefFoundError。如需“胖 JAR”(fat jar),需配置 maven-assembly-plugin 或 maven-shade-plugin:
例如使用 shade 插件,在 pom.xml 中添加:
<build><plugins><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-shade-plugin</artifactid><version>3.4.1</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainclass>com.example.Main</mainclass></transformer></transformers></configuration></execution></executions></plugin></plugins></build>
执行 mvn clean package 后,target/ 下会生成两个 JAR:一个原始的,一个带 -shaded 后缀的可执行 JAR。
不复杂但容易忽略:打包结果取决于 packaging 值和插件配置,不是靠改命令实现的。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










