xon*_*ned 12 eclipse-rcp dependency-management tycho maven
在过去,我们在文件系统上有我们的捆绑和功能,并通过具有"目录"位置的目标定义文件在Eclipse中提供它们.通过这种方式,可以很容易地将它们与Eclipse中的Export向导一起使用.
现在我正在尝试构建一个eclipse-plugin具有第三方依赖关系的Tycho,例如javax.vecmath和org.apache.commons.math.
据我所知,在Tycho构建中获取依赖关系的最佳方法是通过p2存储库.所以我正在使用Eclipse捆绑包.但对于我的第三方软件包,似乎没有可用的p2存储库.
所以我的问题是:如何轻松地将JAR(vecmath,commons-math)放入p2存储库?
我以为我可以用Tycho构建一个p2存储库,但是当我无法访问第谷的第三方软件包时如何做到这一点?我尝试使用目标定义,但Tycho仅支持到p2存储库的链接,而不支持目录或安装.那么有没有其他方法可以在Maven/Tycho构建中使用我的第三方依赖项?
Mar*_*lis 11
一些不同的选择......
P2插件
使用p2-maven-plugin将所有非OSGi依赖项包装到bundle中,并创建一个p2存储库.
我没有尝试过p2-maven-plugin(当我设置当前项目时它不存在).它的实现基于tycho,但你可能会发现它提供了一种更方便的方法来解决你的问题,而不仅仅是tycho插件.
捆绑插件
使用Maven的捆绑,插件来包装你的非OSGi的依赖关系(每个依赖一个包装POM),并将其安装到您的存储库.我认为commons-math已经是一个依赖,所以你可能只需要包装vecmath.然后,您可以在<dependencies>基于tycho的pom文件中列出这些依赖项.
这种方法的优点是您不需要仅为构建项目而设置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构建中的其他地方使用(即通过我的代码),或者作为Eclipse .target文件中的存储库使用.
这eclipse-feature似乎是Tycho 0.13.0中最好的包装类型.在最近的版本中可能有更合适的包装类型.
根据您的问题,第三方依赖项已经是捆绑包。这很好——剩下要做的就是为包生成 p2 元数据。
这可以通过Features and Bundles Publisher 应用程序轻松完成。结果是一个 p2 存储库。显然,您不希望所有开发人员都必须在本地执行此操作才能运行第谷构建,因此您应该将发布者应用程序的结果放到 Web 服务器上。然后,通过项目目标文件中的 http URL 引用包。
| 归档时间: | 
 | 
| 查看次数: | 6409 次 | 
| 最近记录: |