我正在构建一个自定义的声纳插件,这是一个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
任何建议,如何解决?
谢谢
答案 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-logging
至provided
,即
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>...</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
对于版本:使用您目前在dependency:list
中找到的版本。