如何将特定版本的jar包含到Uber jar中?

在构建项目时,maven下载了1.8.2和2.4.3版本的spark-avro依赖项,并且打包了错误的依赖项。

在我的pom.xml文件中,我只有spark-avro版本2.4.3,1.8.2是其他地方的可传递依赖项。

如何指定要放入uber jar的具体版本?我尝试这样做:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <finalName>${project.artifactId}-assembly</finalName>
                        <relocations>
                            <relocation>
                                <pattern>org.apache.http</pattern>
                                <shadedPattern>org.shaded.apache.http</shadedPattern>
                            </relocation>
                        </relocations>
                        <filters>
                            <filter>
                                <artifact>com.alcon.salesforce.etl:alcon-salesforce-etl</artifact>
                                <excludes>
                                    <exclude>com/alcon/etl/glue/common/**</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <artifactSet>
                            <includes>
this --------------------->   <include>org.apache.avro:spark-avro_2.11:2.4.3</include>
                                <include>com.alcon.etl.common:*</include>
                            </includes>
                        </artifactSet>
                        <shadedArtifactAttached>true</shadedArtifactAttached>
                        <shadedClassifierName>assembly</shadedClassifierName>
                    </configuration>
                </execution>
            </executions>
        </plugin>

如您在顶部看到的那样,我在此处编写了spark-avro的特定版本,org.apache.avro:spark-avro_2.11:2.4.3,但我搞砸了某个地方,因为当我提取生成的jar的内容时,没有火花在那里。

正确的语法是什么?

chendodo2009 回答:如何将特定版本的jar包含到Uber jar中?

您在看错地方。 Maven首先将依赖关系合并到一个列表中(每个工件仅在一个版本中出现)。您的<include>只是此列表上的过滤器。

因此,Maven在中介传递性依赖项时可能没有选择您期望的依赖项。但是我不能肯定地说,因为我没有你的dependency:tree

本文链接:https://www.f2er.com/3127122.html

大家都在问