maven-dependency-plugin set scope - это среда выполнения, но копия предоставлена ​​jar

Я пытаюсь построить один проект, используя maven и использовать maven-dependency-plugin, чтобы скопировать jar зависимостей, который следующим образом

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <includeScope>runtime</includeScope>
        </configuration>
      </execution>
    </executions>
  </plugin>

Это includeScope - время выполнения. И есть одна зависимость следующим образом:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.2</version>
  <scope>provided</scope>
</dependency>

предусмотрена область зависимости искрового сердечника. Но когда я запускаю установочный пакет mvn, плагин копирования зависимостей скопирует jar avro-1.7.7.jar и paranamer-2.3.jar в папку зависимостей. Эти два сосуда являются косвенной зависимостью искрового сердечника, подобного следующему:

    +- org.apache.spark:spark-core_2.11:jar:2.3.2:provided
    |  +- org.apache.avro:avro:jar:1.7.7:compile
    |  |  \- com.thoughtworks.paranamer:paranamer:jar:2.3:compile

Я думаю, что это не совсем правильное поведение. Я не могу исключить avro из spark-core, потому что в проекте есть код, использующий класс в avro jar. Как сделать так, чтобы это работало: не копировать ни один из jar-файлов, в который входит область действия, включая jar-файл косвенной зависимости? Большое спасибо может помочь по этому поводу.

0 ответов

Другие вопросы по тегам