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

如何将Maven项目的Fat Jar输出到指定目录并自定义文件名

Maven自定义输出Fat Jar实现方案

你之前配置的全局<build><directory>是Maven整个构建流程的工作根目录,编译生成的class文件、源码缓存等中间产物默认都会写入该目录,因此会产生大量多余文件,不建议直接修改该参数到目标输出目录。

核心实现(使用maven-shade-plugin)

maven-shade-plugin是Maven官方提供的打包插件,支持将所有项目依赖打入Jar包生成Fat/Uber Jar,同时支持自定义文件名、输出路径,中间构建产物默认生成在项目根目录的target文件夹,不会污染你指定的目标输出目录。

在pom.xml的<build><plugins>节点中添加如下配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <!-- 自定义Jar包文件名,无需加.jar后缀 -->
                <finalName>my-custom-app</finalName>
                <!-- 指定Fat Jar的输出目录,替换为你自己的路径 -->
                <outputDirectory>my/path/</outputDirectory>
                <!-- 如果你不需要生成可执行Jar,可删除整个transformers节点 -->
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <!-- 替换为你项目启动主类的全限定名 -->
                        <mainClass>com.yourpackage.YourMainClass</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

配置完成后执行mvn package命令,即可在指定的my/path/目录下得到唯一的自定义命名Fat Jar,所有中间文件都会保存在默认的target目录中,不会出现在目标输出目录。

可选:自动清理中间文件

如果你不需要保留target目录的中间构建产物,可以额外添加如下配置,构建完成后会自动删除target目录:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>clean</goal>
            </goals>
            <configuration>
                <excludeDefaultDirectories>true</excludeDefaultDirectories>
                <filesets>
                    <fileset>
                        <directory>target</directory>
                    </fileset>
                </filesets>
            </configuration>
        </execution>
    </executions>
</plugin>

内容的提问来源于stack exchange,提问作者Eyüp Yıldız

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:54:04