我正在使用声纳进行分析,但出现以下错误:
Error during SonarQube Scanner execution
java.lang.IllegalStateException: No files nor directories matching 'target/classes'
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我有目标目录但没有类目录或文件,分析工作应该在那里做什么?
原因之一可能是如果您在构建项目之前进行分析,Sonar 无法找到该目录。target/classes在您开始使用 maven 构建项目之前,该目录不存在。
尝试使用此值来解决方法:
sonar.java.binaries=target
Run Code Online (Sandbox Code Playgroud)
或者
sonar.java.binaries=.
Run Code Online (Sandbox Code Playgroud)
小智 1
我相信你已经明白了这一点。但是,对于使用 Maven 构建的 Java 项目,您需要执行以下操作。
如果您使用路径“**/target/classes”,那么我们假设您使用 Maven 进行构建。您将执行“mvn clean package”以使 Sonarqube 扫描仪正常工作。
使用 maven 编译并打包到标准目录(“./target/classes”)后,只需将适当的设置传递给扫描器(通过配置文件或命令行)。下面是通过命令行传递的示例。
${scanner_home}/bin/sonar-scanner
-Dsonar.login=<SONAR KEY>
-Dsonar.projectKey=<PROJECT KEY>
-Dsonar.branch.name=<BRANCH_NAME>
-Dsonar.branch.target=<RELEASABLE BRANCH>
-Dsonar.sources=./src
-Dsonar.java.binaries=./target/classes
Run Code Online (Sandbox Code Playgroud)
请注意,我对 sonar.sources 和 sonar.java.binaries 设置使用相对路径。我在 Jenkins 构建管道中执行此操作,并使其可配置,因为我还在构建过程中构建 PHP 并使用 Composer、Gulp、npm 和其他工具。(如果您使用的是 SonarQube Scanner for Maven,那么您可以将其放入属性文件中。)
| 归档时间: |
|
| 查看次数: |
9071 次 |
| 最近记录: |