【发布时间】:2020-12-11 03:27:54
【问题描述】:
我有一个多模块 maven 项目,当我尝试运行声纳扫描时,只运行了 3 个模块中的 1 个。我有一个带有以下模块的父 Pom
<modules>
<module>core</module>
<module>Infra</module>
<module>web</module>
</modules>
网络模块是扫描中的唯一覆盖范围。它与包含主类的模块相同。我该怎么做才能获得所有模块?
编辑:
<!-- Sonar -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.reportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.reportPath>
<sonar.language>java</sonar.language>
我的父 POM 属性中有上述内容
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jaCoCoArgLine</propertyName>
<destFile>${sonar.jacoco.reportPath}</destFile>
</configuration>
</execution>
<execution>
<id>report-aggregate</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
<configuration>
<dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
<outputDirectory>${project.build.directory}/jacoco-report</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- The configuration seems to be required for test coverage to work -->
<configuration>
<argLine>${argLine}</argLine>
</configuration>
</plugin>
这在父 POM 属性中。
这是用于运行声纳的命令
mvn -e org.sonarsource.scanner.maven:sonar-maven-plugin:${config.sonarMavenPluginVersion}:sonar
-Dsonar.host.url=${config.sonarHostUrl}
-Dsonar.login=${config.sonarLogin}
【问题讨论】:
-
如何执行扫描?哪些模块上的哪些命令?
-
我没有看到有关如何执行扫描的信息。对于 Maven,这很容易,简单的
mvn sonar:sonar -Dsonar.host.url=... -Dsonar.login=...就足够了(see docs。我认为您应该从头开始创建配置,因为您定义了 4 个 SonarQube 参数,并且所有这些参数都已弃用/删除(例如sonar.language)。 -
@agabrys 已更新。这有帮助吗?