如何解决Maven提供的范围问题

时间:2019-03-05 08:34:08

标签: java maven sonarqube

我正在构建一个自定义的声纳插件,这是一个maven项目。

Sonar要求提及其必需的ColdstartSplashTheme依赖关系作为范围sonar-plugin-api。我认为可以,因为它将在装有此罐子的声纳容器中运行。

在我的用例中,我想添加provided的其他依赖项。如果我将其添加到默认范围内,它将拒绝构建,并抛出以下错误:

httpclient

如果我将[ERROR] This dependency must be declared with scope <provided>: commons-logging:commons-logging:jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.364 s [INFO] Finished at: 2019-03-05T13:52:22+05:30 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.sonarsource.sonar-packaging-maven-plugin:sonar-packaging-maven-plugin:1.18.0.372:check (default-check) on project myPlugin: Unsupported dependencies 的范围更改为httpclient,它将建立但无法在声纳中工作,因为它的环境中没有这个罐子。

provided中的所有依赖项(包括httpclient)都被称为范围-commons-logging

这是我当前的pom的样子:

compile

任何建议,如何解决?

谢谢

2 个答案:

答案 0 :(得分:3)

Sonar Maven插件包含一个check,因为SonarQube仅支持SLF4J,所以它禁止了commons-logging和LOG4J。

因此,您可以做的是切换到SLF4J并从commons-logging依赖项中排除httpclient

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.6</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.26</version>
    </dependency>

答案 1 :(得分:0)

<dependencyManagement>部分中添加条目以管理commons-loggingprovided,即

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>...</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

对于版本:使用您目前在dependency:list中找到的版本。