GitHub Actions执行Maven deploy时无法重命名war或jar文件如何解决
问题根因
这是Maven的原生默认行为:<finalName> 配置仅控制本地 target 目录下生成的包名称,deploy 阶段默认会按照 artifactId-版本号.后缀 的规则命名并上传构件,不受 finalName 影响。
解决方法
方式1:通过GitHub Actions配置Maven命令实现(无需修改现有pom)
完全可以通过调整GitHub Actions中执行的Maven命令实现自定义部署包名,你可以跳过默认的deploy生命周期,直接使用deploy:deploy-file目标指定要上传的本地包和命名规则,命令示例如下:
mvn deploy:deploy-file \ -Dfile=target/你自定义的最终包名.war \ -DgroupId=你的项目groupId \ -DartifactId=你想要的部署包名称前缀 \ -Dversion=你的项目版本号 \ -Dpackaging=war \ -DrepositoryId=你配置的私服仓库id \ -Durl=你的私服部署地址
将上述参数替换为你的项目实际值后,写入GitHub Actions workflow的Maven执行步骤即可,上传的包名会完全按照你指定的规则生成。
方式2:修改pom配置永久生效
如果希望所有环境执行mvn deploy都沿用自定义的finalName,可以直接在pom中补充maven-deploy-plugin的配置,在<build>下的<plugins>节点中添加以下内容:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> <configuration> <finalName>${project.build.finalName}</finalName> </configuration> </plugin>
配置完成后,原有mvn deploy命令无需调整,即可在部署时使用你定义的finalName作为包名。
注意事项
你当前贴出的pom中所有插件配置都放在<pluginManagement>标签下,该标签仅做全局插件配置声明,不会实际生效,需要在<build>下单独新增<plugins>节点,将需要用到的插件(如maven-war-plugin、maven-deploy-plugin)再声明一次,对应的配置才会加载。
内容的提问来源于stack exchange,提问作者4help2
相关产品推荐
相关产品推荐

