gpt4 book ai didi

java - 如何创建支持 Spring 的 Eclipse 插件?

转载 作者:行者123 更新时间:2023-12-02 08:21:13 25 4
gpt4 key购买 nike

在创建带有 Spring 支持的简单 Eclipse 插件时,我遇到了问题。

我的主要目标是使用 Apache Camel 框架开发多模块 Eclipse 插件项目。这就是为什么我尝试使用 Spring 作为 IoC 容器(Camel 有很好的 Spring DSL)和 Apache Maven 作为构建工具。

现在我有一个非常简化的子目标:为Eclipse插件创建简单的Maven项目(如HelloWorld),它可以通过bundle-context.xml文件创建Spring的ApplicationContext,从那里获取一些简单的依赖项,例如,打印它到控制台。

我从 spring-osgi-bundle-archetype 原型(prototype)开始。我正在尝试使用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 中并在 MANIFEST 的 Bundle-Classpath 中声明。

但插件仍然无法工作:出现类似

的错误

NoClassDefFound:org.springframework.context.ApplicationContext

没有可用的捆绑导出包“org.springframework.context”(如果我尝试强制将此包添加到 Import-Package 中)。

但是具有此依赖项的存档(spring-context-3.0.5-RELEASE.jar)存在于目标/依赖项和 Bundle-Classpath 中。

我对OSGi技术的经验不是很丰富,所以我什至无法理解这是Maven的问题还是OSGi的问题。

有人有创建支持 Spring 的 Eclipse 插件的经验吗?欢迎任何建议和意见。另外,如果能看到一些支持 Spring 的开源 Eclipse 插件那就太好了。

最佳答案

我建议您为 Eclipse 项目首先构建 list ,这样您就可以使用 Eclipse 中的所有工具来实现插件功能,请参阅 tycho以及页面末尾的示例。

编辑:tycho 页面上的链接已损坏,通过 github 获取示例相反,它是演示文件夹

关于java - 如何创建支持 Spring 的 Eclipse 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com