我正在尝试使用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>
提供了spark-core依赖范围。但是,当我运行mvn install package时,复制依赖项插件会将jar avro-1.7.7.jar和paranamer-2.3.jar复制到依赖项文件夹中。这两个jar是spark-core的间接依赖项,如下所示:
+- 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
我认为这是不正确的行为。我无法从spark-core中排除avro,因为项目中有一些代码使用avro jar中的类。 如何使其工作:不要复制提供了范围的任何jar,包括间接依赖jar? 非常感谢您可以提供帮助。