Maven Release插件仅提交pom.xml,如何将修改的MANIFEST.MF纳入同次提交?
解决Maven Release插件提交额外文件的问题
这个问题我之前帮不少团队解决过——maven-release-plugin默认确实只聚焦pom.xml的版本变更提交,要把构建时修改的MANIFEST.MF纳入同次提交,有两种靠谱的自动化方案,看你场景选:
方案1:直接配置Release插件包含额外提交文件
在项目的pom.xml中,给maven-release-plugin添加<checkinFiles>配置,明确指定需要和pom.xml一起提交的文件。这样release:prepare阶段就会自动把这些文件纳入提交范围。
示例配置:
<build> <plugins> <!-- 其他插件配置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.0.1</version> <!-- 建议使用最新稳定版 --> <configuration> <!-- 保留你原有的release配置,比如scmCommentPrefix等 --> <scmCommentPrefix>[maven-release-plugin][skip ci]</scmCommentPrefix> <!-- 添加需要提交的额外文件 --> <checkinFiles> <!-- 替换成你实际的MANIFEST.MF路径,相对于项目根目录 --> <checkinFile>src/main/resources/META-INF/MANIFEST.MF</checkinFile> <!-- 如果还有其他需要提交的文件,继续添加即可 --> </checkinFiles> </configuration> </plugin> </plugins> </build>
注意:这里的路径必须是版本库中已追踪的文件(也就是不在.gitignore里的),如果你的MANIFEST.MF是在target目录下的构建产物,那不应该提交——这类文件每次构建都会生成,不需要进版本库。
方案2:在Prepare阶段先执行构建生成修改后的文件
如果你的私有插件是在package阶段修改MANIFEST.MF,而release:prepare默认不会执行构建,那可以配置<preparationGoals>让prepare阶段先完成构建,确保MANIFEST.MF被修改后再提交。
示例配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>3.0.1</version> <configuration> <!-- 让prepare阶段先执行clean和package,触发你的私有插件修改MANIFEST.MF --> <preparationGoals>clean package</preparationGoals> <!-- 同样指定要提交的额外文件 --> <checkinFiles> <checkinFile>src/main/resources/META-INF/MANIFEST.MF</checkinFile> </checkinFiles> <!-- 你的原有配置 --> <scmCommentPrefix>[maven-release-plugin][skip ci]</scmCommentPrefix> </configuration> </plugin> </plugins> </build>
验证方法
修改完pom.xml后,你可以先加上-DdryRun=true参数运行release:prepare,模拟整个流程,看看输出里是否包含了你要提交的MANIFEST.MF文件,确认没问题后再正式执行发布命令。
内容的提问来源于stack exchange,提问作者Anouar BAKRI
相关产品推荐
相关产品推荐

