Я использую Maven-Shade-Plugin. Это структура моего приложения
app
-> Core
-> ModuleA
Я хочу иметь Core в качестве зависимости в ModuleA. Ядро объявило кучу зависимостей, из которых только Flyway и Postgressql.
Я предположил, что поскольку Core добавлен в качестве зависимости в ModuleA, будут включены и пролетные пути, и Postgres. Я строю толстую банку из ModuleA, используя Maven-Shade-Plugin.
Но проблема в том, что когда я просматриваю дерево зависимостей ModuleA, я вижу старые версии Flyway и Postgres, которые включаются. Я искал весь мой classparth и старых версий нигде нет. Я не понимаю, как идут эти старые версии. Что-то не так с maven-shade-plugin?
Core pom. xml
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.2.4</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.6</version>
</dependency>
ModuleA pom. xml
<dependency>
<groupId>example</groupId>
<artifactId>core</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>shade-my-jar</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>org.apache.hadoop:hadoop-auth</exclude>
<exclude>org.apache.hadoop:hadoop-common</exclude>
<exclude>org.apache.hadoop:hadoop-annotations</exclude>
<exclude>org.apache.zookeeper:zookeeper</exclude>
<exclude>org.apache.hadoop:hadoop-yarn-server-common</exclude>
<exclude>org.apache.hadoop:hadoop-mapreduce-client-shuffle</exclude>
<exclude>org.apache.hadoop:hadoop-yarn-api</exclude>
<exclude>org.apache.hadoop:hadoop-mapreduce-client-core</exclude>
<exclude>org.apache.hadoop:hadoop-yarn-common</exclude>
<exclude>org.apache.hadoop:hadoop-mapreduce-client-jobclient</exclude>
<exclude>org.apache.hadoop:hadoop-annotations</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Когда я проверьте вывод сборки, я вижу
[INFO] Including org.flywaydb:flyway-core:jar:3.2.1 in the shaded jar.
[INFO] Including org.postgresql:postgresql:jar:9.4.1212.jre7 in the shaded jar.
Я не могу понять, как / где он получает 3.2.1 для пролетного пути и 9.4.1212 для Postgres, когда версии, объявленные в ядре, отличаются .