В AEM есть пакет под названием «OSGi Bundle Wrapper For The Apache POI Library».
Я хочу обновить версию POI этого пакета, чтобы использовать POI 5.2.3 с AEM 6.3.
Есть ли способ легко обновить версию POI в этом комплекте?
Спасибо.
В своем пользовательском пакете pom вы можете указать зависимость внедрения для требуемой версии poi. Так что ваш пакет будет ссылаться на версию poi из встроенного jar и не предоставленную контейнером AEM.
Вы пытались использовать тег maven-bundle-plugin -
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version></version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Name>${bundle.name}</Bundle-Name>
<Export-Package>${bundle.namespace}</Export-Package>
<Bundle-Activator>Activator.class</Bundle-Activator>
<Embed-Dependency>*;scope=!provided|test;groupId=!org.mybundle.test</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Import-Package>*;resolution:=optional</Import-Package>
</instructions>
</configuration>
</plugin>
Вы можете либо включить все зависимости, либо настроить, чтобы не включать определенные. Атрибут scope позволяет вам настроить, какие jar-файлы зависимостей вы хотите включить, на основе их области включения. Вы не должны включать зависимости, которые необходимы только для компиляции и тестирования.
Apache POI предоставляет модуль для создания комплексного пакета OSGi, см. https://github.com/apache/poi/tree/trunk/osgi
Он может либо заменить пакет OOB POI, либо вы можете создать свой собственный поверх него, имея код POI во внутреннем пути к классам.
Вам нужно обновить сам пакет. Я не уверен, что это возможно, просто получив более новую версию.