pom.xml(Maven 多模块项目)中的 <sonar.exclusions> 在本地工作,但不在公司服务器上

Posted

技术标签:

【中文标题】pom.xml(Maven 多模块项目)中的 <sonar.exclusions> 在本地工作,但不在公司服务器上【英文标题】:<sonar.exclusions> in pom.xml (Maven multi-module project) works locally but not on company server 【发布时间】:2014-10-01 08:19:39 【问题描述】:

我在 pom.xml 中使用&lt;sonar.exclusions&gt; 来排除单元测试代码覆盖的某些包。我已经在本地设置了 Sonar,并且排除项反映在报告中。但是,公司服务器上不支持相同的排除项。

我正在使用&lt;sonar.skippedModules&gt;,它可以按预期工作,并且在两种环境中都可以完美地跳过所需的模块。

本地声纳版本为4.3.1 公司声纳版本为4.1.2

我如何在其中一个模块中编写&lt;sonar.skippedModules&gt; 的示例:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.mainClass>.....</project.mainClass>
    <sonar.exclusions>
        /src/main/java/../../../../../Package1/*,
        /src/main/java/../../../../../Package2/*,
        /src/main/java/../../../../../JavaClass1.java
    </sonar.exclusions>
    <sonar.language>java</sonar.language>
</properties>

您能否帮助我理解为什么&lt;sonar.exclusions&gt; 仅在本地获得荣誉,而在我构建工作(在 Jenkins 上设置)以在公司服务器上生成声纳报告时却没有?版本不同重要吗?

逗号后面没有换行符来分隔包名会有所不同吗?

【问题讨论】:

你为什么使用'../..'?是否要排除所有包中的 Package1、Package2 和 JavaClass1 类中的所有文件? 【参考方案1】:

试试这个,我遇到了同样的问题,它对我有用

不要以“/src/main/java/”开头 而是以“com/companyname/projectname/”开头

我个人更喜欢“**com/companyname/projectname/../**

【讨论】:

看起来sonar.exclusions不排除像**/enums/**,**/entity/**,**/constant/**这样的多个路径【参考方案2】:

我可能弄错了,但您应该删除 sonar.exclusions 路径开头的 / 字符,以便相对于项目的根目录计算它们。

【讨论】:

看起来sonar.exclusions 不排除像**/enums/**,**/entity/**,**/constant/** 这样的多个路径

以上是关于pom.xml(Maven 多模块项目)中的 <sonar.exclusions> 在本地工作,但不在公司服务器上的主要内容,如果未能解决你的问题,请参考以下文章

Maven单独构建多模块项目中的单个模块

Maven单独构建多模块项目中的单个模块

pom.xml(Maven 多模块项目)中的 <sonar.exclusions> 在本地工作,但不在公司服务器上

Tycho 的 Maven 多模块中的自定义 pom.xml 文件名

如何在 Maven 多模块项目中仅运行父 pom.xml

Maven 搭建spring boot多模块项目