构建脱机“的解决方案”;“复合”;带有类别的Eclipse更新站点

构建脱机“的解决方案”;“复合”;带有类别的Eclipse更新站点,eclipse,p2,tycho,update-site,Eclipse,P2,Tycho,Update Site,这将是一个相当长的问题,所以请容忍我。我正在寻找一种解决方案,以构建在脱机开发环境中使用的自定义更新站点(或p2存储库),并考虑以下事项: 每个站点将包含第三方和定制Eclipse插件的混合 我想为每个IDE配置创建一个站点。e、 使用Helios的开发者只需要添加一个包含m2e、Subversive和CustomPluginA的更新站点。使用FlashBuilder的开发者可以添加一个包含m2e和CustomPluginB的不同站点 因为开发是离线的,所以我们现在。自定义站点需要从这些副本中

这将是一个相当长的问题,所以请容忍我。我正在寻找一种解决方案,以构建在脱机开发环境中使用的自定义更新站点(或p2存储库),并考虑以下事项:

  • 每个站点将包含第三方和定制Eclipse插件的混合

  • 我想为每个IDE配置创建一个站点。e、 使用Helios的开发者只需要添加一个包含m2e、Subversive和CustomPluginA的更新站点。使用FlashBuilder的开发者可以添加一个包含m2e和CustomPluginB的不同站点

  • 因为开发是离线的,所以我们现在。自定义站点需要从这些副本中提取插件

  • 我们的定制Eclipse插件目前是用Jenkins上的Maven+Tycho构建的。如果可能的话,我想配置更新站点,以便与Jenkins一起自动构建。然后,如果自定义插件被更新,它可以触发必要的更新站点构建

  • 更新站点中的自定义类别会很好

我正试图找到最好、最干净的方法来解决这个问题我如何使用第谷建立这样的网站?第谷是最好的选择吗?我希望将第三方插件复制到每个站点,还是希望创建指向每个镜像第三方站点的p2复合存储库。是否可以使用p2复合存储库创建自定义类别

最后,什么是真正定义站点中包含哪些插件和功能的最简单方法?在Eclipse中,我可以创建一个更新站点项目,使编辑非常容易,但我只能包括Eclipse安装中存在的插件。手动创建site.xml或p2 ant脚本可以解决此问题,但手动确定可安装的单元ID和版本既困难又容易出错


感谢您抽出时间阅读这些内容。如果有人真的能解决我所有的担忧,那将是令人惊讶的,我可能不得不在这个问题上加上一个悬赏。

我将建议两种方法,一种是使用第谷,另一种是使用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>

org.eclipse.tycho
. 使用聚合器定义一个使用现有更新站点的模型,然后使用聚合器执行该模型,结果就是一个更新站点。在后一种情况下,您可以构建引用其他更新站点的复合更新站点,也可以从原始数据创建独立副本。本手册包含一个简单的例子,很容易使用

3) 比较

在B3中,定义镜像逻辑更为简单,因为模型仅包含镜像描述,并且还允许创建只引用现有站点的复合更新站点。然而,如果你想做任何事情除了更新网站建设,那么它是很难做到的。此外,它可以在headless构建中执行(例如来自Jenkins),但它需要安装headless Eclipse实例。文档包含了详细信息,但是工具不像Maven/Tycho那样独立

在Tycho的情况下,很难看到生成的更新站点的结构,但是,生成的构建更具可扩展性(例如,您可以简单地使用相同类型的构建添加您自己的功能),并且要进行构建,您只需要安装Maven

总之,这两种工具可能都适合您的需要—您需要在您的案例中评估它们的优缺点

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