如何避免执行Maven install时自动向pom文件添加license标签
解决方案
这个现象是license管理插件绑定到了install生命周期自动执行导致的,Maven核心本身不会自动修改本地pom文件内容,按下面步骤排查即可:
- 首先验证插件触发根源:执行
mvn install -Dlicense.skip=true,如果加该参数后pom不会再被新增license标签,就能确认是license-maven-plugin(或公司内部定制的同类型插件)导致的问题。 - 检查项目及父POM的插件配置:在父POM、所有子模块POM中查找
license-maven-plugin的执行配置,若存在绑定到install阶段的add-license/update-project-licenses类目标,要么移除该执行规则,要么在插件配置中添加<skip>true</skip>参数跳过修改pom的逻辑。 - 清理全局缓存与配置:
- 执行
mvn help:active-profiles检查是否有全局自动激活的profile配置了license插件,即使你恢复了settings.xml,仍可能存在未删除的全局profile配置残留 - 清空本地Maven仓库中license插件的缓存目录,默认路径为
~/.m2/repository/org/codehaus/mojo/license-maven-plugin/,如果是公司内部定制插件,删除对应groupId的插件目录后重新构建
- 执行
- 排查继承的父POM配置:如果你的项目继承了组织内部的公共父POM,大概率是父POM中默认配置了license自动插入规则,你可以在本地项目的POM中覆盖该插件的配置设置跳过,或者联系父POM维护方调整规则。
如果你需要保留license校验能力只是不允许修改本地pom,可以调整插件的配置项,将修改pom的目标换成仅校验不修改的
check目标即可。
内容的提问来源于stack exchange,提问作者Davide
相关产品推荐
相关产品推荐

