6

大约 6 个月以来,我一直在苦苦挣扎,但还没有找到一种简洁的方法来理解使用第三方资源开发 eclipse 插件的机制。

我们正在尝试开发一个 Eclipse ODA,以在内部基于 Spring 的代码之上访问基于 REST 的信息集。

概括地说——这是我认为我们需要能够做到的:

  • 使用 tycho 或 felix 捆绑插件使用 Eclipse 捆绑信息增强我们的 maven 工件。
  • 通过 Eclipse 为 ODA 实施和 UI 设置插件项目。
  • 让 Tycho 为插件生成 poms 等。

现在这就是我变得浑浊的地方。我知道有两种方法

  1. Manifest-First - 这是定义插件依赖项的标准机制
  2. POM-First - 通过 Maven 的解析机制提供依赖关系。

我不完全确定从哪里开始尝试这样做,因为我从未开发过 eclipse 插件。

我的其他问题之一是,Eclipse 插件的开发人员(除了 Maven)如何利用现有的第三方代码(即 Apache HttpClient 4.x)?他们是否必须下载 jars,将它们转储到项目中的目录中,添加到类路径,然后从那里开始,或者是否有类似于 ivy、maven、gradle 使用的“存储库”机制?

在此先感谢,如果我对此有点漫不经心,我​​深表歉意。

4

3 回答 3

4

Disclaimer: Your question is very broad, so it is impossible to answer it completely. Still, I can give you some hints so that you know what to search for.

In the Eclipse universe, the primary source for libraries (in the sense of binary dependencies) are p2 repositories. However, since p2 repositories are rarely used outside of the Eclipse context, you won't e.g. find a p2 repository on the Apache HTTP Client project's download page.

To account for this problem, there is the Eclipse Orbit Project which provides libraries used by Eclipse projects in p2 repositories.

If you can't find the library or library version in the Eclipse Orbit, you may also be able to use the libraries from Maven repositories. This is for example supported by Tycho via the pomDependencies=consider mechanism.

Note however that Eclipse plug-ins can only depend on libraries which are OSGi bundles. So if the library in the Maven repository is not yet an OSGi bundle, you need to convert it to an OSGi bundle first, e.g. with the maven-bundle-plugin and the Embed-Dependency mechanism.

于 2014-05-09T21:26:23.907 回答
3

Eclipse 插件使用库的最佳方式是作为 OSGi 包。您只需将这些捆绑包安装到您的目标平台并以与 eclipse.org 插件相同的方式引用它们。一些库提供商已经将他们的库作为 OSGi 包提供。如果没有这一点,您通常可以通过添加一些清单条目将一个普通的库 jar 转换为一个 OSGi 包。

根据您使用的构建系统以及您需要的库是否可以作为打包到在线 p2 存储库中的 OSGi 捆绑包提供,您可以引用 URL 并依赖您的构建来下载和安装捆绑包。

于 2013-05-29T17:43:24.150 回答
1

如果为具有依赖关系的 Eclipse 插件选择构建系统的问题仍然存在:

Today I released new gradle plugin: Wuff version 0.0.1, which (I think) completely solves the problem. It allows to build Eclipse bundles and applications as they would be "normal" Gradle projects. All OSGi woodoo is auto-generated (although customizable). All dependencies are usual maven dependencies - regardless of whether dependency is OSGi or "normal" library.

Sources and doc: https://github.com/akhikhl/wuff

于 2014-05-05T15:23:30.930 回答