通过category.xml包含IU,而不使用Tycho对其进行分类

时间:2016-01-05 17:34:14

标签: eclipse tycho

Tycho 0.23开始,可以通过在category.xml

中声明它们,将可安装单元(IU)包含到最终的p2存储库中

例如,要包含我的某个包所需的Gson解析器,我可以编写以下内容:

<iu id="com.google.gson">
  <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仅用于实现存储库主要功能的依赖性。它们并不意味着自己安装。

以前我使用tycho-extras mirror goal来包含其他IU,虽然我认为我现在可以将'include IUs'指令移到category.xml,这使我无法维护存储库URL。

但遗憾的是,当生成的存储库显示在Eclipse 安装软件对话框中时,category.xml中包含的IU会出现在未分类类别下。< / p>

Documentation is sparse,因此我在这里询问是否有办法从任何类别中排除IU或定义“隐藏”类别?

3 个答案:

答案 0 :(得分:0)

为了让更新站点运行但不显示任何IU /类别,只需删除<iu>...</iu>标签(及其内部内容)即可。换句话说,请将category.xml文件保留为空。

您将看到生成的content.xml文件将列出所有IU,但是在浏览时,任何IU都可以安装&#34;。

此处(https://github.com/antoine-morvan/p2-repo-example)是一个示例项目,它使用自定义category.xml从Maven依赖项构建P2 repo。只包含一个依赖项,jgraph:5.13及其源代码,产生两个捆绑包。在提供的category.xml中,定义了类别,但没有feature / iu。

生成网站并使用Eclipse浏览后,不会显示任何内容。但是,如果查看content.xml的内容,您将看到正确提供了bundle。这意味着可以使用/引用此p2存储库以查找缺少的依赖项,自定义安装...

希望有所帮助,最好的问候。

答案 1 :(得分:0)

似乎没有一种方法可以在不对其进行分类的情况下将IU添加到category.xml,即,它们将始终显示在一个类别中。

但是,有两种解决方法:

(1)要将所有依赖项(包括传递性依赖项)包括在includeAllDependencies的{​​{1}}配置中的最终p2存储库集配置选项truepom.xml中。缺点是,这实际上将包含所有内容,即,如果您正在开发Eclipse插件,则最终的存储库将包含大量的Eclipse插件,例如Eclipse Platform,Equinox,SWT。不确定是否需要。

(2)如果您不介意进行一些后期处理,则可以在构建存储库后删除“未分类”类别。有一个p2.remove.iu Ant任务。

p2-repository-plugin

来源:

答案 2 :(得分:-1)

查看非常稀疏的文档(我也同意)我认为您可以在元素中添加类别。比如这个:

<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>