3

我是一名 Eclipse RCP 开发人员,正在使用tycho-p2-director-plugin构建应用程序。

好消息是程序集生成并可以成功运行。坏消息是我期望生成的工件之一(.eclipseproduct文件)没有生成。

我试图弄清楚这个文件是怎么回事——不仅它不通过 Tycho 生成,而且当我使用 Eclipse 产品导出向导时它也不生成。 根据我在这里找到的文档,我希望它会是。

在这一点上,我基本上想知道两件事,因为我找不到任何关于该.eclipseproduct文件应该来自哪里/应该在什么时候生成的好的文档。

如果它是在 tycho maven 生命周期中生成的,那么我希望在我的目标文件夹下找到该文件 - 但事实并非如此。我还没有找到一种方法让 tycho 静态包含配置文件(除了 config.ini),否则我会使用该方法将静态 .eclipseproduct 文件附加到我的安装目录的根目录。

如果这是应该由安装程序生成的东西,那么使用 p2 的机制是什么,以便您可以完成此操作?我已经考虑在我的主 P2 IU 中包含 .eclipseproduct 文件,但我不清楚该文件是否会实际复制到根目录以及如何完成。

如您所知,关于如何将这个文件包含在我的构建中,我还没有找到太多的方向。任何指向正确方向的指针都会有所帮助。如有必要,我还可以包含我的产品配置文件。

4

1 回答 1

2

这应该是一个评论,因为它只是部分答案,但它太长了。

这似乎.eclipseproduct是在构建时生成的文件,而不是由 p2 在配置时创建的:

为了找到这一点,我使用 p2 director 配置了 Eclipse 4.2 的副本(对于说明,我使用了此页面的安装完整产品部分,将存储库更新到4.2 站点而不是使用 3.6 站点,并从使用 Windows 路径更改为更适合我的mac)。

我在文件列表中注意到该.eclipseproduct文件似乎是一个解压缩的工件,而不是一个生成的工件,因为时间戳不同:

$ ls -lA
total 304
-rw-r--r--    1 myself  group      60 Sep 14 18:13 .eclipseproduct
drwxr-xr-x    3 myself  group     102 Nov  2 14:49 Eclipse.app
-rw-r--r--    1 myself  group  112366 Nov  2 14:49 artifacts.xml
...

这让我浏览了./p2目录中的各种缓存,我发现有一个可安装单元org.eclipse.platform_root,它是一个包含许可和文件的 zip.eclipseproduct文件......

:p2 $ zipinfo org.eclipse.equinox.p2.core/cache/binary/org.eclipse.platform_root_*
Archive:  org.eclipse.equinox.p2.core/cache/binary/org.eclipse.platform_root_4.2.1.v20120814-120134-9JF7BHVGFyMveli1uX6aTH0q-eAap6PAgOP5mO   38125   5
-rw----     2.0 fat        0 bl defN 14-Sep-12 18:13 readme/
-rw----     2.0 fat   104173 bl defN 14-Sep-12 18:13 readme/readme_eclipse.html
-rw----     2.0 fat     9051 bl defN 14-Sep-12 18:13 notice.html
-rw----     2.0 fat       60 bl defN 14-Sep-12 18:13 .eclipseproduct
-rw----     2.0 fat    16536 bl defN 14-Sep-12 18:13 epl-v10.html
5 files, 129820 bytes uncompressed, 37501 bytes compressed:  71.1%

我在文件中找到的 content.xml 文件中找到了 P2 IU 信息org.eclipse.equinox.p2.repository/cache/content*.jar

...
<unit id='org.eclipse.platform_root' version='4.2.1.v20120814-120134-9JF7BHVGFyMveli1uX6aTH0q-eAap6PAgOP5mO'>
  <provides size='1'>
    <provided namespace='org.eclipse.equinox.p2.iu' name='org.eclipse.platform_root' version='4.2.1.v20120814-120134-9JF7BHVGFyMveli1uX6aTH0q-eAap6PAgOP5mO'/>
  </provides>
  <artifacts size='1'>
    <artifact classifier='binary' id='org.eclipse.platform_root' version='4.2.1.v20120814-120134-9JF7BHVGFyMveli1uX6aTH0q-eAap6PAgOP5mO'/>
  </artifacts>
  <touchpoint id='org.eclipse.equinox.p2.native' version='1.0.0'/>
  <touchpointData size='1'>
    <instructions size='2'>
      <instruction key='install'>
        unzip(source:@artifact, target:${installFolder});
      </instruction>
      <instruction key='uninstall'>
        cleanupzip(source:@artifact, target:${installFolder});
      </instruction>
    </instructions>
  </touchpointData>
</unit>
...

简而言之:当安装这个 IU 时(根据 要求org.eclipse.platform.feature.group),p2 只需将工件解压缩.eclipseproduct到安装文件夹。无需转换。因此它必须在安装时间之前生成。

编辑:我也在E​​clipse Git Repositories中找到了它,但还没有弄清楚这是否是变成上述 IU 的那个......

于 2012-11-05T17:49:51.987 回答