Я работаю над проектом AEM, я новичок в AEM, кстати.Я пытаюсь использовать пару сторонних библиотек не OSGI, таких как Dozer и Spring.Я действительно борюсь с этим, это боль в заднице, может быть, это потому, что OSGI - это старая школа.Мои пакеты устанавливаются, но не активны в консоли OSGI, так как они жалуются на отсутствующие пакеты.
Я хочу сделать шаг за шагом.Сначала я хочу заставить свои связки работать только с Dozer и ничего больше.Это мои зависимости pom:
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer-osgi</artifactId>
<version>5.5.1</version>
</dependency>
Вот моя конфигурация maven-bundle-plugin:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>4.1.0</version>
<configuration>
<instructions>
<Export-Package>somepackages*</Export-Package>
<Private-Package/>
<Import-Package>*</Import-Package>
<Sling-Bundle-Resources>/META-INF</Sling-Bundle-Resources>
</instructions>
</configuration>
</plugin>
Как вы можете видеть, я уже использую dozer-osgi.Я не уверен, почему это не поднимает это.Он жалуется на это:
org.dozer,version=[5.5,6) -- Cannot be resolved
org.dozer.loader.api,version=[5.5,6) -- Cannot be resolved
Во-первых, я не понимаю, почему он говорит [5.5,6), потому что я говорю ему использовать 5.5.1.Во-вторых, я уже использую dozer-osgi, я думаю, что он должен поднять его автоматически.
Я пробовал также использовать:
<Embed-Dependency>dozer-osgi</Embed-Dependency>
Whit dozer-osgi добавлено, что вещи начинают становиться лучше и сложнее одновременно.Кажется, что теперь он загружает Dozer, но начинает жаловаться на транзитивные зависимости:
android.dalvik -- Cannot be resolved
dalvik.system -- Cannot be resolved
javassist.util.proxy -- Cannot be resolved
org.apache.commons.beanutils,version=[1.9,2) -- Cannot be resolved
org.apache.commons.beanutils.converters,version=[1.9,2) -- Cannot be resolved
Утилиты beanutils легко исправить.Мне просто нужно добавить относящиеся зависимости как это:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
и добавить здесь "commons-beanutils":
<Embed-Dependency>dozer-osgi,commons-beanutils</Embed-Dependency>
Теперь он жалуется на:
android.dalvik -- Cannot be resolved
dalvik.system -- Cannot be resolved
javassist.util.proxy -- Cannot be resolved
org.hibernate.proxy -- Cannot be resolved
Ошибка зависимости гибернации является новой.Я думал, что beanutils зависит от hibernate, но не зависит ли Dozer от него.
Я пытался добавить hibernate, например:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.9.Final</version>
</dependency>
<Embed-Dependency>dozer-osgi,commons-beanutils,hibernate-core</Embed-Dependency>
И так далее, это похоже на внешний видстановится все хуже и хуже каждый раз, когда я пытаюсь добавить транзитивную зависимость.Я также попробовал это, сохраняя только dozer-osgi в моих зависимостях:
<Embed-Dependency>dozer-osgi</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
Результат:
android.dalvik -- Cannot be resolved
dalvik.system -- Cannot be resolved
javassist.util.proxy -- Cannot be resolved
org.hibernate.proxy -- Cannot be resolved
org.apache.commons.beanutils -- Cannot be resolved
org.apache.commons.beanutils.converters -- Cannot be resolved
Это как если бы Embed-Transitive неработать вообще.
Каков наилучший способ работы со сторонними библиотеками при использовании Maven и AEM?В моем случае Maven использует для установки пакетов в моем экземпляре AEM.