【发布时间】:2017-06-02 22:48:51
【问题描述】:
我创建了一个执行 SONAR QUBE 分析的 Jenkins 作业。 我已将 SONAR 扫描添加为通用构建步骤。 我没有对项目进行任何修改以启用 SONAR 集成,因为该项目不必关心 SONAR。 (即 POM.xml 没有更改,也没有添加属性文件)
我的 SONAR 集成工作正常,项目不需要任何模块,这很棒。
但是,它是一个多模块项目,现在我想从扫描中排除其中一个模块,因为该模块包含自动生成的代码。 以下是我用来在 Jenkins 中触发 SONAR 扫描的 Maven 命令:
sonar:sonar
-Dsonar:host.url=http://url.com:9000/sonar
-Dsonar.login=myusername
-Dsonar.password=mypassword
这是我的项目结构:
root
Project A
Project B
Project C
我想从扫描中排除 ProjectB。
我尝试了-Dsonar.exclusions=/ProjectB,但没有成功。
这是日志的摘录:
[INFO] ------------- Scan Project B
[INFO] Base dir: /workspace/jenkins/…/workspace/CI-JOB-NAME/projectB
[INFO] Working dir: /workspace/jenkins/…/workspace/CI-JOB-NAME/projectB/target/sonar
[INFO] Source paths: pom.xml, src/main/java
[INFO] Binary dirs: target/classes
[INFO] Source encoding: UTF-8, default locale: en_US
[INFO] Index files
[INFO] Excluded sources:
[INFO] /projectB
[INFO] 44 files indexed
[INFO] 0 files ignored because of inclusion/exclusion patterns
如日志所示,excluded sources 属性已设置但无法正常工作,因为它说 0 个文件被忽略...
问题:如何从扫描中排除项目 B 目录中的所有内容? (最好在 Jenkins 作业中使用命令,不要向项目本身添加任何属性文件或其他修改)
“排除的源路径”是相对于“基本目录”路径还是根路径? 我应该将排除路径定义为绝对路径吗?
【问题讨论】: