Eclipse 通过category.xml包含IUs,而不使用Tycho对其进行分类
因为可以通过在Eclipse 通过category.xml包含IUs,而不使用Tycho对其进行分类,eclipse,tycho,Eclipse,Tycho,因为可以通过在category.xml 例如,要包含我的一个bundle所需的Gson解析器,我可以编写以下代码: id==com.google.gson&&;版本=2.2.0&&;版本3.0.0 要包含的IUs仅用于满足存储库主要功能的依赖性。它们不应该单独安装 以前,我使用包含额外的IUs,尽管我认为现在可以将“包含IUs”指令移动到category.xml,这样我就不用冗余地维护存储库URL了 但不幸的是,当生成的存储库显示在Eclipse安装软件对话框中时,通
category.xml
例如,要包含我的一个bundle所需的Gson解析器,我可以编写以下代码:
id==com.google.gson&&;版本=2.2.0&&;版本3.0.0
要包含的IUs仅用于满足存储库主要功能的依赖性。它们不应该单独安装
以前,我使用包含额外的IUs,尽管我认为现在可以将“包含IUs”指令移动到category.xml
,这样我就不用冗余地维护存储库URL了
但不幸的是,当生成的存储库显示在Eclipse安装软件对话框中时,通过category.xml
包含的IUs显示在未分类的类别下
因此,我在这里问,是否有办法将IUs从任何类别中排除,或定义“隐藏”类别?查看非常稀疏的文档(我也同意),我认为您可以在元素中添加类别。例如:
<iu id="com.google.gson">
<category name="javax"/> <<<<<<- here
<query>
<expression type="match">
id == com.google.gson && version >= 2.2.0 && version < 3.0.0
</expression>
</query>
</iu>
为了让更新站点运行但不显示任何IU/类别,只需删除..
标记(以及其中的内容)。换句话说,将category.xml文件保持为空
您将看到生成的content.xml文件将列出所有的IU,但在浏览时,没有一个是“可安装的”
这里()是一个示例项目,它使用custom category.xml从Maven依赖项构建P2 repo。只包含一个依赖项,即jgraph:5.13及其源,从而生成两个bundle。在提供的category.xml中,定义了类别,但未定义功能/iu
生成站点并使用Eclipse浏览之后,将不会显示任何内容。但是,如果查看content.xml的内容,您将看到捆绑包是正确提供的。这意味着此p2存储库可用于/引用缺少的依赖项、自定义安装
希望对您有所帮助,致以最诚挚的问候。似乎没有一种方法可以将IUs添加到category.xml中而不进行分类,也就是说,它们将始终显示在一个类别中
但是,有两种解决办法:
(1) 要在最终p2存储库中包含所有依赖项(包括可传递依赖项),请在p2存储库插件的pom.xml
配置中将配置选项includealdependences
设置为true
。缺点是,这将真正包括所有内容,即,如果您正在开发一个Eclipse插件,那么最终的存储库将包括大量Eclipse插件,如Eclipse平台、Equinox、SWT。不确定这是不是你想要的
(2) 如果您不介意一些后期处理,您可以在构建存储库后删除“未分类”类别。有一个p2.remove.iu Ant任务
<p2.remove.iu>
<repository location="file://${repositoryOnBuildMachine}" />
<iu query="property[@name='org.eclipse.equinox.p2.name' @value='Uncategorized']" />
</p2.remove.iu>
资料来源:
请重新阅读问题。这将如何从任何类别中排除IUs或定义“隐藏”类别?链接的示例没有使用Tycho。因此,我认为这要么是org.reficio p2 maven插件的一个特性,要么是一个bug(偶然工作)。