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 &amp;&amp; version &gt;= 2.2.0 &amp;&amp; version &lt; 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(偶然工作)。