这应该是一个评论,因为它只是部分答案,但它太长了。
这似乎.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
到安装文件夹。无需转换。因此它必须在安装时间之前生成。
编辑:我也在Eclipse Git Repositories中找到了它,但还没有弄清楚这是否是变成上述 IU 的那个......