Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven SonarQube多模块_Java_Maven_Sonarqube - Fatal编程技术网

Java Maven SonarQube多模块

Java Maven SonarQube多模块,java,maven,sonarqube,Java,Maven,Sonarqube,我有一个由几个模块组成的项目 我正试图用SonarQube分析这些 我已将Sonar Maven插件作为依赖项包含在每个模块中: <dependency> <groupId>org.codehaus.sonar</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>5.1</version> </dependency>

我有一个由几个模块组成的项目

我正试图用SonarQube分析这些

我已将Sonar Maven插件作为依赖项包含在每个模块中:

<dependency>
  <groupId>org.codehaus.sonar</groupId>
  <artifactId>sonar-maven-plugin</artifactId>
  <version>5.1</version>
</dependency>

org.codehaus.sonar
声纳maven插件
5.1
然后我运行Maven时使用:

mvn清洁验证声纳:声纳

Maven成功完成,我可以看到Sonar分析正在进行,但是当我打开Sonar UI时,这些模块在项目中不可见

然而

如果我从单个模块目录运行Maven命令,它在项目中是可见的


感觉我错过了一些非常简单的东西,感谢任何帮助

sonar maven插件
放在根
pom.xml
部分,而不是作为依赖项,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.0.1</version>
        </plugin>
    </plugins>
</build>
mvn clean install
mvn sonar:sonar
<properties>
    <!-- Optional URL to server. Default value is http://localhost:9000 -->
    <sonar.host.url>http://myserver:9000</sonar.host.url>
</properties>
要配置sonarqube服务器URL,请在
settings.xml
pom.xml
中,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.0.1</version>
        </plugin>
    </plugins>
</build>
mvn clean install
mvn sonar:sonar
<properties>
    <!-- Optional URL to server. Default value is http://localhost:9000 -->
    <sonar.host.url>http://myserver:9000</sonar.host.url>
</properties>

http://myserver:9000

SonarQube与Maven一样支持多模块项目。这意味着包含多个模块的Maven项目映射到包含多个模块/组件的SonarQube项目,而不是多个项目

以SonarQube代码为例(这是一个多模块Maven项目):集合子模块中的所有信息,然后如果您查看其(或其页面),您可以看到所有子组件的列表(例如:)


底线是你看到了预期的行为。Maven项目的子模块不应作为项目进行分析,您应该始终分析父项目,SonarQube将以本机方式处理模块。

这看起来很有效。我需要删除从单个模块运行时创建的Sonar项目,但接下来我可以看到创建的项目。似乎v5.1也不能作为插件使用,我不得不改用2.7.1。并非Maven专家如此不确定这是为什么…?Maven的SonarQube扫描仪版本不遵循SonarQube服务器版本。如Julien H所述,请检查@timothyclifford。Maven插件与SonarQube本身有单独的版本控制。我更正了答案,将groupId/artifactId/version用于与SonarQube服务器v5.1兼容的插件的最新版本。谢谢@Abrahamgrey,看来你是对的。我不知道其他版本(4,5)支持什么?有什么想法吗?@timothyclifford我从最新的版本推断,maven插件支持4.5及以上版本。我会远离
groupId
中包含
codehaus
的任何工件,因为codehaus已经停止,除非您试图让旧的东西工作。Nicolas,请您解释一下为什么@heeneee报告中需要单独调用maven?因为这是违反直觉的,似乎与maven通常的工作方式相矛盾;e、 例如,不必分别运行“mvn清理”和“mvn安装”,只需运行“mvn清理安装”。Thx。提供的链接已断开