这将是一个很长的问题,所以请耐心等待。我正在寻找构建自定义更新站点(或p2存储库)的解决方案,以便在离线开发环境中使用,并考虑以下事项:
每个站点都包含第三方和自定义Eclipse插件的混合。
我想为每个IDE配置创建一个站点。例如使用Helios的开发人员只需添加1个包含m2e,Subversive和CustomPluginA的更新站点。使用Flash Builder的开发人员可以添加包含m2e和CustomPluginB的其他站点。
由于开发处于离线状态,我们目前mirror 3rd-party update sites with a script。自定义网站需要从这些副本中提取插件。
我们的自定义Eclipse插件目前在Jenkins上使用Maven + Tycho构建。如果可能的话,我还想将更新站点配置为使用Jenkins自动构建。然后,如果更新了自定义插件,则可以触发必要的更新站点构建。
更新网站中的自定义类别会很不错。
我正在努力找到最好,最干净的方法来解决这个问题。 如何使用Tycho建立网站来设置这样的东西? Tycho是最好的选择吗?我是否希望将第三方插件复制到每个站点,或者是否要创建指向每个镜像第三方站点的p2复合存储库。是否可以使用p2复合存储库创建自定义类别?
最后,实际定义站点中包含哪些插件和功能的最简单方法是什么?在Eclipse中我可以创建一个更新站点项目,使编辑变得非常简单,但我只能包含Eclipse安装中存在的插件。手动创建site.xml或p2 ant脚本可以解决此问题,但手动确定可安装的单元ID和版本很困难且容易出错。
感谢您花时间阅读所有这些内容。如果有人能够真正解决我所有令人惊讶的问题,那么我可能不得不为这个问题添加一笔赏金。
答案 0 :(得分:4)
我会建议两种方式,一种是Tycho,另一种是B3聚合器。
1)第谷:
步骤1。:使用PDE内置工具定义目标平台,该工具使用现有的本地更新站点,并将其另存为.target文件。然后,您可以在构建中引用此文件,如下所示:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version> <configuration>
<resolver>p2</resolver>
<target>
<artifact>
<groupId>org.eclipse.viatra2</groupId>
<artifactId>«project name where the target file resides»</artifactId>
<version>«artifact version»</version>
<classifier>«target filename without extension»</classifier>
</artifact>
</target>
<ignoreTychoRepositories>true</ignoreTychoRepositories>
</configuration>
</plugin>
第2步。:将新项目定义为更新站点。该项目应包含category.xml,该类别引用上一步骤中目标平台的已使用功能的已使用版本。您可以使用PDE类别定义向导/编辑器创建此category.xml。
第3步。:只需使用更新站点原型发布您的构建:
<packaging>eclipse-repository</packaging>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-publisher-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<publishArtifacts>true</publishArtifacts>
</configuration>
</plugin>
</plugins>
</build>
2) B3聚合器:
Eclipse B3项目包含aggregator feature。使用聚合器定义使用现有更新站点的模型,然后使用聚合器简单地执行此模型,结果是更新站点。在后一种情况下,您可以构建复合更新站点,引用其他更新站点,也可以从原始数据创建独立副本。本手册包含一个简单的例子,它易于使用。
3)比较
在B3中定义镜像逻辑更直接,因为模型仅包含镜像描述,并且还允许创建仅引用现有站点的复合更新站点。但是,如果除了更新站点构建之外还要做其他任何事情,那么就更难做到了。此外,它可以在无头构建中执行(例如,来自Jenkins),但它需要安装无头Eclipse实例。该文档包含详细信息,但该工具不像Maven / Tycho那样独立。
对于Tycho,很难看到生成的更新站点的结构,但是,生成的构建更具可扩展性(例如,您可以使用相同类型的构建添加自己的功能),并进行构建你只需要安装Maven。
总而言之,这两种工具都可能满足您的需求 - 您需要评估自己的优势和劣势。