几个不同的选择...
P2 插件
使用p2-maven-plugin将所有非 OSGi 依赖项打包到包中,并创建一个 p2 存储库。
我还没有尝试过 p2-maven-plugin (在我设置当前项目时它不存在)。它的实现是基于 tycho 的,但您可能会发现它提供了一种比单独的 tycho 插件更方便的方法来解决您的问题。
捆绑插件
使用maven-bundle-plugin包装您的非 OSGi 依赖项(每个依赖项一个包装器 pom),并将其安装到您的存储库中。我认为 commons-math 已经是一个依赖项,所以你可能只需要包装 vecmath。<dependencies>
然后,您可以在基于 tycho 的 pom 文件中列出这些依赖项。
这种方法的优点是您不需要为了构建项目而设置 p2 存储库。缺点是管理你的 bundle 项目中的依赖不再是仅仅修改 MANIFEST.MF 文件的情况:你可能还需要更新 pom。
捆绑插件和 Tycho
如果您使用Bundle 插件方法将依赖项包装到 OSGi 包中,那么为这些依赖项设置 p2 存储库可能仍然有用,因为这简化了在 Eclipse PDE 中设置目标平台的过程。
为此,您可以创建一个新的基于 tycho 的项目来将依赖项收集到 p2 存储库中:即,已经捆绑的依赖项以及非 OSGi 依赖项的包装版本。这样,创建 p2 存储库的项目会在其 pom 中列出包装的依赖项,并且您的捆绑项目可以使用 p2 存储库而不在其 pom 中列出任何依赖项。
这是我正在使用的方法。具体来说,我正在使用一个eclipse-feature
项目来定义一个包含所有第三方依赖项的基本功能。我还将<deployableFeature>
打包插件上的配置选项设置为true
,这将在目标目录中创建一个 p2 存储库。这个特性可以安装到我常用的 Eclipse 实例中,这样可以很容易地使用当前的 Eclipse 平台作为目标平台。它也可以用作 p2 存储库,可以在 tycho 构建的其他地方使用(即通过我的代码),或者用作 Eclipse.target
文件中的存储库。
eclipse-feature
似乎是第谷 0.13.0 中最好的包装类型。在更新的版本中可能有更合适的包装类型。