У меня проблема при создании даже простого плагина Eclipse с поддержкой Spring.
Моя главная цель - разработать многомодульный проект плагина Eclipse с использованием фреймворка Apache Camel.Вот почему я пытаюсь использовать Spring в качестве контейнера IoC (у Camel хороший Spring DSL) и Apache Maven в качестве инструмента для сборки.
Теперь у меня очень упрощенная подцель: создать простой проект Maven для плагина Eclipse (как HelloWorld), который может создать SpringConfision ApplicationContext с помощью файла bundle-context.xml, получить оттуда простую зависимость и, например, вывести ее на консоль.
Я начал с spring-osgi-bundle-archetypeархетип.Я пытаюсь использовать maven-bundle-plugin , но безуспешно.В настоящее время у меня есть следующая конфигурация в pom.xml:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<manifestLocation>META-INF</manifestLocation>
<ignoreMissingArtifacts>true</ignoreMissingArtifacts>
<instructions>
<Bundle-SymbolicName>${bundle.symbolicName}; singleton:=true</Bundle-SymbolicName>
<Bundle-Version>${pom.version}</Bundle-Version>
<!-- | assume public classes are in the top package, and private classes
are under ".internal" -->
<Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${pom.version}"</Export-Package>
<Private-Package>${bundle.namespace}.internal.*</Private-Package>
<Import-Package>.,*;resolution:=optional</Import-Package>
<Bundle-Activator>${bundle.namespace}.Activator</Bundle-Activator>
<Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
<Require-Bundle>org.eclipse.ui,org.eclipse.core.runtime</Require-Bundle>
<Bundle-RequiredExecutionEnvironment>JavaSE-1.6</Bundle-RequiredExecutionEnvironment>
<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
<Embed-Directory>target/dependency</Embed-Directory>
<Embed-StripGroup>true</Embed-StripGroup>
<Embed-Transitive>true</Embed-Transitive>
</instructions>
</configuration>
</plugin>
Эта конфигурация может генерировать MANIFEST.MF с большим количеством импортированных пакетов, все зависимости из pom.xml встроены в target / dependency и объявлены в MANIFESTBundle-Classpath.
Но плагин по-прежнему не работает: есть ошибки, такие как
NoClassDefFound: org.springframework.context.ApplicationContext
или
Нет доступных пакетов экспорта пакета 'org.springframework.context' (если я попытаюсь принудительно добавить этот пакет в Import-Package).
Но архив с этой зависимостью (spring-context-3.0.5-RELEASE.jar) существует в target / dependency и в Bundle-Classpath.
Я не очень разбираюсь в технологии OSGi, поэтому даже не могу понять, является ли это проблемой с Maven или с OSGi.
У кого-нибудь есть опыт создания плагинов Eclipse с поддержкой Spring?Любые советы и комментарии приветствуются.Также было бы здорово увидеть какой-нибудь плагин OpenSource Eclipse с поддержкой Spring.