maven - 使用maven从父pom扩展属性到子pom

标签 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]

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

最佳答案

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

然后您可以将 POM 中的属性覆盖为

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

关于maven - 使用maven从父pom扩展属性到子pom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269410/

相关文章:

maven - 如何将angular2与spring boot一起使用

java - 从maven导入自己的项目时出错

java - Windows 用户配置文件和 Java

java - 从 Selenium 中的配置属性文件读取值时出现空指针异常

java.lang.NoSuchMethodError : putMemberOffset

java - 在 Jenkins Slave 上使用 Maven

java - 使用 Maven 进行树外构建。是否可以?

java - 项目不在 Eclipse 构建路径中

Java创建文件,路径无法识别(我猜)

java - 从 'RUN ./mvnw dependency:go-offline -B' 为 Spring Boot 应用程序构建 docker 镜像时,无法运行 "openjdk:8-jdk-alpine"