tba*_*ker 10 eclipse osgi eclipse-rcp tycho maven
我的Eclipse RCP应用程序是使用Tycho构建的.它由多个组件组成(以OSGi包/ Eclipse插件的形式).其中一个组件包含产品文件并实现产品.
应用程序根目录下有一个reactor POM,它按顺序构建所有组件,但我也想独立构建其他组件(使用mvn deploy).
构建这样的单个组件的工作原理如下:
注意:我们的存储库是托管在Nexus上的普通maven2存储库,其RCP工件也自动映射到p2存储库格式.这样,Tycho可以使用p2存储库格式来查找依赖项,而可以使用标准的Maven部署.这很好用.
注意:我的父POM确保我们在p2存储库URL中查找依赖项.部署URL是存储库的默认maven2格式位置.这很好用.
当通过命令行(mvn deploy)构建这样的单个组件时,Maven 在p2存储库中查找项目内依赖项并正确解析它们(即最新版本会自动下载并在构建中使用).
但是,在Eclipse中进行开发时,IDE无法解析它们.清单文件在我的每个项目内依赖项中都会出现错误,导致无法解析这些错误.
我的问题是:如何让Eclipse IDE在以下任何一个中查找依赖项(以及新版本的依赖项):
~/.m2/repository/p2/osgi/bundles)nexus.mycompany.com/myproduct-snapshots/.meta/p2)理想情况下,如果有更新版本,它每次都会查找它们并获取最新版本.
如果它不使用POM中的p2存储库URL,我应该如何配置Eclipse?
考虑一个eclipse插件com.mycompany.myproduct.fancy,它依赖于另一个eclipse插件com.mycompany.myproduct.core.
两者都有一个POM(配置为Tycho使用),它(通过其父POM)正确配置了我的Nexus存储库:部署的maven2存储库URL和查找依赖关系的p2存储库URL.
首先,我将core插件部署到我的maven存储库(使用默认值mvn deploy).Nexus存储库将以maven和p2格式提供此部署的插件.
当我fancy通过命令行(使用mvn install)构建组件时,会自动找到并下载(先前部署的)核心组件.
project/com.mycompany.myproduct.fancy$ mvn clean install
<searches in p2 repository, download core>
<builds fancy>
<SUCCESS>
Run Code Online (Sandbox Code Playgroud)
当我打开一个新的Eclipse工作区并打开该fancy组件时,其Manifest(包含其依赖项)会出现以下错误:
Bundle 'com.mycompany.myproduct.core' cannot be resolved.
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何fancy在Eclipse IDE中开发组件而无需core在Eclipse中作为项目打开.
这是我方的一些猜测.如果我错了请纠正我,也欢迎任何其他解决实际问题的方法!
我知道Eclipse IDE 的m2e插件目前将Maven POM映射到Eclipse概念(使用m2e连接器).我安装了专用的Tycho连接器.例如,mvn编译步骤实际上是由Eclipse JDT编译器执行的.
我也知道,当在Eclipse中启动完整的Tycho产品时,它将在Eclipse PDE环境中运行.例如,我需要在Run配置中指定目标平台.
我知道我可以打开Eclipse工作区中的所有组件.这样可以解决问题,但由于我有很多组件,因此不可行,这会破坏独立的组件开发.
我假设Eclipse m2e映射和/或PDE构建环境不够智能,无法在构建时自动获取(最新)依赖项.如果我错了,请纠正我.:)
因此,我假设我还需要在构建时指定目标平台.我看了一下Window> Preferences> Plug-in Development> Target Platform.我可以将我们的p2存储库添加到目标平台,从而解决了这个问题.然而,这会带来许多问题:
如果以上都是正确的,我推测我需要一个m2e连接器(或者与当前的连接器不同),在解析OSGi依赖关系时实际检查POM中指定的p2存储库并自动将它们添加到目标平台.
如Nick Wilson所示,您需要安装m2e Tycho配置器,它基本上"连接"Eclipse和Tycho(即,使Eclipse中的Tycho可用).
你应该在安装m2e之后指出它,但你也可以手动安装它:
转到窗口>首选项> Maven>发现.
单击"打开目录"按钮.这将打开"m2e Marketplace"窗口.
搜索"tycho",这应该给你"Tycho配置器"作为唯一的搜索结果.
点击"完成",你就完成了.
我也有这个问题,找到解决方案并不简单,所以我希望这有帮助!
在Eclipse中配置目标平台的"最自动化"方法是使用目标文件.该文件可以使用您的源签入,因此每个开发人员只需打开该文件并单击"设置为目标平台"即可激活它.AFAIK没有m2e连接器或Eclipse插件可以自动完成.
鉴于您的开发过程,设置此目标文件有点棘手.由于您没有包含所有捆绑包的最新版本的功能,因此需要将捆绑包直接包含在目标文件中.这不是通过丰富的编辑器实现的,但可以使用文本编辑器完成:
<unit>您添加的功能的条目.而是为每个捆绑包添加一个条目:
<unit id="a.bundle.symbolic.name" version="0.0.0"/>
Run Code Online (Sandbox Code Playgroud)然后,此目标文件包含每个列出的捆绑包的最新版本.要查看内容,请再次使用"目标编辑器"打开文件,然后切换到"内容"选项卡.现在,所有开发人员都可以使用此文件.
注意:当其中一个软件包的新版本部署到Nexus时,开发人员只有在打开目标文件并再次选择"设置为目标平台"时才会看到该新版本.
| 归档时间: |
|
| 查看次数: |
6673 次 |
| 最近记录: |