从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
相关产品推荐
相关产品推荐

