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

从Ant迁移至Maven,如何修改Source Plugin生成的源码JAR文件名?

解决Maven源码包命名为fileName-src.jar的问题

我完全懂你这种要保持历史命名规范的需求——毕竟项目迁移最怕打破现有依赖或归档习惯!你之前尝试的<finalName>和<fileNameMapping>没生效,核心原因是没针对maven-source-plugin的核心参数做调整,下面是正确的配置方案:

maven-source-plugin默认用sources作为classifier(也就是文件名里的-sources部分),要改成src,我们需要在插件配置里显式修改这个参数,同时配合你需要的无版本命名规则:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.3.0</version> <!-- 建议使用官方最新稳定版本 -->
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar-no-fork</goal> <!-- 若需绑定到编译阶段,用这个目标;如果要单独执行,也可以用jar目标 -->
                    </goals>
                    <configuration>
                        <!-- 核心:把默认的classifier从sources改成src -->
                        <classifier>src</classifier>
                        <!-- 去掉文件名中的版本号 -->
                        <fileNameMapping>no-version</fileNameMapping>
                        <!-- 指定最终的基础文件名,比如你项目的artifactId -->
                        <finalName>${project.artifactId}</finalName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

为什么之前的配置不生效?

你之前在build根节点设置的<finalName>,maven-source-plugin并不会直接继承,必须在插件自身的<configuration>里配置才会生效;而<fileNameMapping>也需要配合插件的classifier调整才能达到你要的fileName-src.jar效果。

测试验证

配置完成后,执行以下命令就能生成符合要求的源码包:

mvn clean package source:jar

执行后你会在target目录下看到[你的项目名]-src.jar文件,完全符合之前Ant构建的命名规范。

如果你的项目是多模块结构,把这段配置放到父pom的<pluginManagement>里,所有子模块就能自动继承这个规则,不用逐个配置啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:08:53