繁体   English   中英

如何在Tycho构建中使用包含第三方包的目录

[英]How to use directory containing third party bundles in a Tycho build

过去,我们在文件系统上拥有捆绑包和功能,并通过具有“目录”位置的目标定义文件在Eclipse中提供它们。 通过这种方式,可以很容易地将它们与Eclipse中的Export向导一起使用。

现在我正在尝试使用Tycho构建一个eclipse-plugin ,它具有第三方依赖,例如javax.vecmathorg.apache.commons.math

据我所知,在Tycho构建中获取依赖关系的最佳方法是通过p2存储库。 所以我正在使用Eclipse捆绑包。 但对于我的第三方软件包,似乎没有可用的p2存储库。

所以我的问题是:如何轻松地将JAR(vecmath,commons-math)放入p2存储库?

我以为我可以用Tycho构建一个p2存储库,但是当我无法访问第谷的第三方软件包时如何做到这一点? 我尝试使用目标定义,但Tycho仅支持到p2存储库的链接,而不支持目录或安装。 那么在Maven / Tycho构建中是否有其他方法可以使用我的第三方依赖项?

一些不同的选择......

P2插件

使用p2-maven-plugin将所有非OSGi依赖项包装到bundle中,并创建一个p2存储库。

我没有尝试过p2-maven-plugin(当我设置当前项目时它不存在)。 它的实现基于tycho,但你可能会发现它提供了一种更方便的方法来解决你的问题,而不仅仅是tycho插件。

捆绑插件

使用maven-bundle-plugin 包装非OSGi依赖项(每个依赖项一个包装器pom),并将其安装到您的存储库中。 我认为commons-math已经是一个依赖,所以你可能只需要包装vecmath。 然后,您可以在基于tycho的pom文件的<dependencies>中列出这些依赖项。

这种方法的优点是您不需要仅为构建项目而设置p2存储库。 缺点是在捆绑项目中管理依赖项不再仅仅是修改MANIFEST.MF文件:您可能还需要更新pom。

Bundle插件和Tycho

如果您使用Bundle插件方法将依赖项包装到OSGi包中,那么为这些依赖项设置p2存储库仍然很有用,因为这简化了在Eclipse PDE中设置目标平台的过程。

为此,您可以创建一个新的基于tycho的项目来将依赖项收集到p2存储库中:即已经捆绑的依赖项,以及非OSGi依赖项的包装版本。 这样,创建p2存储库的项目会在其pom中列出包装的依赖项,并且bundle项目可以使用p2存储库而不在其poms中列出任何依赖项。

这是我正在使用的方法。 具体来说,我使用eclipse-feature项目来定义一个包含所有第三方依赖项的基本功能。 我还将打包插件上的<deployableFeature>配置选项设置为true ,这将在目标目录中创建一个p2存储库。 此功能可以安装到我常用的Eclipse实例中,这使得使用当前Eclipse平台作为目标平台变得容易。 它还可以用作p2存储库,可以在tycho构建中的其他地方使用(即通过我的代码),或者作为Ec​​lipse .target文件中的存储库使用。

eclipse-feature似乎是第谷0.13.0中最好的包装类型。 在最近的版本中可能有更合适的包装类型。

在p2回购中寻找第三方捆绑罐子的好地方是日食轨道

http://download.eclipse.org/tools/orbit/downloads/

commons.math在那里。

如果您的第三方OSGi包在p2仓库中不可用,但在maven仓库中可用,例如

http://search.maven.org/

你可以使用tycho的pomDependency =考虑切换:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

根据您的问题,第三方依赖项已经是捆绑包。 这很好 - 剩下要做的就是为bundle生成p2元数据。

这可以通过Features and Bundles Publisher应用程序轻松完成。 结果是一个p2存储库。 显然,您不希望所有开发人员都必须在本地执行此操作才能运行Tycho构建,因此您应该将发布者应用程序的结果放到Web服务器上。 然后,通过项目目标文件中的http URL引用包。

以下是如何执行此操作的实际示例: https//github.com/skosmalla/generate-p2-repository-from-maven-artifacts

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM