You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否有Maven插件可将主JAR及所有依赖JAR打包为Zip文件?

解决方案:用Maven Assembly Plugin打包主JAR及依赖为Zip文件

作为Maven新手,你的需求完全可以通过maven-assembly-plugin轻松实现——这是Maven官方提供的插件,专门用来将项目的主JAR、依赖JAR、资源文件等打包成Zip、Tar等归档格式,非常适合分发场景。

下面是具体的实现步骤:

1. 创建Assembly配置文件

首先在项目的src/main/assembly目录下创建一个自定义的配置文件(比如assembly.xml),用来定义Zip包的结构:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
    <!-- 定义归档文件的标识和格式 -->
    <id>distribution</id>
    <formats>
        <format>zip</format>
    </formats>
    <!-- 包含项目构建生成的主JAR -->
    <files>
        <file>
            <source>${project.build.directory}/${project.build.finalName}.jar</source>
            <outputDirectory>/</outputDirectory>
        </file>
    </files>
    <!-- 包含项目的运行时依赖(自动排除JUnit这类测试依赖) -->
    <dependencySets>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
            <useProjectArtifact>false</useProjectArtifact>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
</assembly>

这个配置会生成一个Zip包,里面包含你的项目主JAR,以及一个lib目录存放所有运行时依赖JAR(不会包含JUnit这类仅用于测试的依赖)。

2. 在pom.xml中配置maven-assembly-plugin

把插件添加到你的pom.xml的<build><plugins>节点下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.6.0</version>
    <configuration>
        <!-- 指定刚才创建的assembly配置文件 -->
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
    </configuration>
    <!-- 绑定插件到package阶段,执行mvn package时自动生成Zip -->
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3. 生成Zip包

现在只需要在项目根目录执行以下命令:

mvn clean package

执行完成后,你会在target目录下找到类似your-project-name-distribution.zip的归档文件,里面就包含了你的主JAR和所有依赖JAR。

额外说明

  • 如果需要包含测试依赖(比如你要分发的包需要运行JUnit测试),可以把assembly配置里的<scope>runtime</scope>改成<scope>compile</scope>,不过通常分发运行环境不需要测试依赖。
  • 如果你不想自定义assembly配置,也可以尝试插件的预定义descriptor,但自定义配置更灵活,能完全控制Zip包的结构。

内容的提问来源于stack exchange,提问作者Davout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:05:44