我正在参与一个大型项目,其中我们有多个模块,每个模块都是一个独立的 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]
有没有办法实现我想要的?
<sonar.exclusions>${sonar.standard.exclusions}</sonar.exclusions>
来解决这个问题...或者更好的是,我将把上述行添加到父POM中,那么如果它没有被覆盖,那就可以工作了,如果我想要覆盖它,我有一种简单的方法来添加特定的排除项到标准排除项中。 - Urs Beeli