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-файл косвенной зависимости? Большое спасибо может помочь по этому поводу.