使用Maven从子pom中的父pom扩展属性

时间:2019-12-10 14:25:47

标签: maven

我在一个大型项目中工作,我们有多个模块,每个模块都是自己的maven项目,并带有一个公共父pom。

除其他事项外,父pom在我们的构建服务器上定义了Sonar集成。我们在构建服务器上的Sonar插件会评估属性“ sonar.exclusions”,以跳过我们不想进行分析的文件。

为此,我们在父pom中定义一个属性:

<properties>
    <sonar.exclusion>**/generated/**/*,**/migration/**/*</sonar.exclusions>
</properties>

现在,在我们的一个项目中,我们要添加到此排除列表中。我不想替换父项中定义的那些排除项,但我也不想重复它们。我正在寻找的是以下几方面的东西:

<properties>
  <sonar.exclusions>${sonar.exclusions},**/shadow/compare/**/*</sonar.exclusions>
</properties>

最后,我希望$ {sonar.exclusions}的内容为

**/generated/**/*,**/migration/**/*,**/shadow/compare/**/*

但是,尝试上述操作会导致错误:

pom.xml has 1 error [main] ERROR org.apache.maven.cli.MavenCli - Resolving expression:  ${sonar.exclusions}': Detected the following recursive expression cycle in 'sonar.exclusions': [sonar.exclusions]

有没有办法实现我想要的?

1 个答案:

答案 0 :(得分:1)

您可以在包含您的标准排除项的父POM中定义属性<sonar.standard.exclusions>,并设置<sonar.exclusions>${sonar.standard.exclusions}</sonar.exclusions>

然后,您可以使用

覆盖POM中的属性。
<sonar.exclusions>${sonar.standard.exclusions},**/shadow/compare/**/*</sonar.exclusions>