Привет, я использую две версии Apache POI jar в своем проекте. Поэтому я пытаюсь закрасить одну jar со всеми зависимостями, используя maven shaded plugin. Но когда я строю свой проект, он становится успешным, но когда я импортирую затененный jar в мой код, он показывает ошибку, которую (все методы внутри затененного jar) не найдено. Может ли кто-нибудь помочь мне создать затененную баночку POI.
Ниже приведен мой файл POM.xml, который я использую для создания Apache POI с затенением
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.divas</groupId>
<artifactId>poi-conflicting-jarsfix</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.apache</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<!-- <includes> <include>com.hierynomus.**</include> <include>net.engio.**</include>
<include>org.bouncycastle.**</include> </includes> -->
<excludes>
<exclude>META-INF/maven/**</exclude>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<relocations>
<relocation>
<pattern></pattern>
<shadedPattern>shaded.</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<artifactId>poi</artifactId>
<version>4.0.0</version>
<groupId>org.apache.poi</groupId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-examples</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-excelant</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
После создания этой заштрихованной банки я добавляю ниже зависимости в моем проекте pom.xml
<dependency>
<groupId>com.divas</groupId>
<artifactId>poi-conflicting-jarsfix</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
После добавления приведенной ниже зависимости я импортирую ниже строки
import shaded.org.apache.poi.ss.usermodel.Workbook
вместо
import org.apache.poi.ss.usermodel.Workbook
но мой код выдает исключение под названием Workbook, который не является членом shaded.org.apache.poi.ss.usermodel
Тем не менее, он работает нормально без затененной банки