Как решить проблему с Maven при условии - PullRequest
0 голосов
/ 05 марта 2019

Я создаю пользовательский плагин сонара, который является проектом maven.

Сонар просит упомянуть, что требуется 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, он будет построен, но не будет работать в сонаре каку него нет этого jar в его env.

Все зависимости в httpclient, включая commons-logging, упоминаются как область действия - compile.

Вот как выглядит мой нынешний pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.plugin.sonar</groupId>
    <artifactId>myPlugin</artifactId>

    <!-- this is important for sonar-packaging-maven-plugin -->
    <packaging>sonar-plugin</packaging>

    <version>1.0</version>
    <name>myPlugin</name>

    <url>http://maven.apache.org</url>

    <dependencies>

        <dependency>
            <groupId>org.sonarsource.sonarqube</groupId>
            <artifactId>sonar-plugin-api</artifactId>
            <!-- minimal version of SonarQube to support. Note that the groupId was "org.codehaus.sonar" before version 5.2 -->
            <version>6.7</version>
            <!-- mandatory scope -->
            <scope>provided</scope>
        </dependency>

        <!-- facing problem after adding this dependency-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.3.6</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId>
                <artifactId>sonar-packaging-maven-plugin</artifactId>
                <version>1.18.0.372</version>
                <extensions>true</extensions>
                <configuration>
                    <pluginKey>MyCustomPlugin</pluginKey>
                    <pluginClass>com.plugin.sonar.MyCustomPlugin</pluginClass>
                    <pluginDescription>Sonar plugin of Test</pluginDescription>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

Есть предложения, как его решить?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Плагин Sonar Maven содержит check , который запрещает ведение журнала общих и LOG4J, потому что SonarQube поддерживает только SLF4J.

Итак, вы можете переключиться на 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>
0 голосов
/ 05 марта 2019

Добавьте запись в разделе <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 на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...