Maven Release Plugin 2.5.3中preparationGoals使用Profile报错求助
解决maven-release-plugin 2.5.3版本preparationGoals中使用Profiles报错的问题
我来帮你搞定这个问题——你遇到的是maven-release-plugin 2.5.x版本对preparationGoals参数解析逻辑的变更导致的兼容性问题。
解决方案
把Profile参数从preparationGoals中剥离,改用插件的arguments配置项来传递这些命令行参数,修改后的完整插件配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> <useReleaseProfile>true</useReleaseProfile> <releaseProfiles>profile1,profile2</releaseProfiles> <preparationGoals>clean verify</preparationGoals> <arguments>-Pprofile3,profile4</arguments> </configuration> </plugin>
问题原因
在2.2.2版本中,插件对preparationGoals的处理比较宽松,会直接把配置的内容当作完整的命令行片段拼接执行,所以带-P这类参数不会有问题。但升级到2.5.x版本后,插件对preparationGoals的解析变得严格:它只会识别生命周期阶段或者插件目标(格式如plugin:goal),而把-Pprofile3,profile4这类命令行选项误判成了无效的生命周期阶段,因此抛出了你看到的错误。
而arguments配置项是插件专门用来传递额外命令行参数的字段,它会正确解析-P这类选项,和你直接在命令行执行mvn clean verify -Pprofile3,profile4的效果完全一致。
修改完成后,重新执行release流程,应该就能正常构建了。
内容的提问来源于stack exchange,提问作者A.v
相关产品推荐
相关产品推荐

