【问题标题】:Example how to build an eclipse RCP app with tycho against a nexus repository示例如何使用 tycho 针对 nexus 存储库构建 Eclipse RCP 应用程序
【发布时间】:2012-11-11 03:22:38
【问题描述】:

Lars Vogel 有一个很好的教程,介绍了如何使用 tycho (http://www.vogella.com/articles/EclipseTycho/article.html) 构建 eclipse 插件或 rcp 应用程序。这很好用,但有两件事我不喜欢。它建立在某个地方且不受我控制的存储库

  <repositories>
     <repository>
       <id>juno</id>
       <layout>p2</layout>
       <url>http://download.eclipse.org/releases/juno</url>
     </repository>
  </repositories>

并且它没有显示工件如何被另一个构建使用。 如果可能的话,我想针对应该托管目标平台的nexus存储库进行构建,并且应该上传我的构建部署,以便另一个构建可以将其引用为他的目标平台。

我看到有一些用于 nexus 的 p2 插件,还有一个 nexus-unzip-plugin (https://bugs.eclipse.org/bugs/show_bug.cgi?id=393309) 可用于导航到工件,但我没有足够的知识来了解如何将这些东西粘在一起能够针对 nexus 存储库构建 eclipse 插件或 rcp 应用程序。有人可以告诉我这样做的方法吗?

【问题讨论】:

    标签: build rcp nexus tycho


    【解决方案1】:

    您应该不需要 nexus-p2-plugin。如果您将 p2 存储库作为 zip 文件部署到 maven 存储库,您应该能够使用解压缩插件。有关配置的说明,请参阅 wiki 页面 - http://wiki.eclipse.org/Tycho/Nexus_Unzip_Plugin。我在这里提取了一些步骤;

    1. 克隆存储库(假设安装了 git)

      git clone git://git.eclipse.org/gitroot/tycho/org.eclipse.tycho.nexus.git

    2. 构建插件(假设安装了maven)

      mvn 全新安装

    -- 参见wiki页面中的“部署插件”

    1. 停止你的 nexus 安装

    2. 解压 org.eclipse.tycho.nexus.git/target/unzip-repository-plugin--bundle.jar 到你的 sonatype-work/nexus/plugin-repository/

    3. 开始您的 nexus 安装

    4. 请参阅 wiki 页面中的“配置解压缩存储库”

    5. 如果您的主存储库是公共的,并且您创建了一个名为 public.unzip 的虚拟解压缩存储库,则部署的 p2 存储库 zip 可在例如

      http://<NEXUS_HOST>/nexus/content/repositories/public/org/example/demo/org.example.demo.repository/0.1.0/org.example.demo.repository-0.1.0.zip
      

    应该可以作为;

        http://<NEXUS_HOST>/nexus/content/repositories/public.unzip/org/example/demo/org.example.demo.repository/0.1.0/org.example.demo.repository-0.1.0.zip-unzip
    

    您应该能够将该 URL 用作构建中的 p2 存储库 URL。

    【讨论】:

    • Nexus Unzip 插件已经由 hudson 实例 https://hudson.eclipse.org/hudson/ 构建。遗憾的是,公众无法下载该工件。
    • 现在您可以按照上述说明从源代码自行编译。
    • 好的,谢谢西蒙。它正在工作。权衡是您必须始终为相关项目提供更新站点。甚至您的核心也需要 rcp/osgi 运行时作为更新站点。
    • 我不确定我是否理解您的评论。您的意思是基本的 eclipse 东西不在您的存储库中,需要单独引用吗?如果是这样,您可以控制此行为 - 请参阅 wiki.eclipse.org/Tycho/Packaging_Types#eclipse-repository。您还可以创建一个复合 p2 存储库,指向您的 nexus 工件存储库和 eclipse 存储库(或它的镜像) - 请参阅wiki.eclipse.org/Equinox/p2/Composite_Repositories_(new%29
    • 我的评论是关于 rcp 应用程序如何引用 eclipse 平台的东西。我用 eclipse 做了一个更新站点项目,引用了我需要的 eclipse 包。然后我构建更新站点并将其作为 zip 文件部署到存储库。也许包装类型“eclipse-repository”也可以完成这项工作。我还没试过。
    【解决方案2】:

    为了建立对抗 Nexus 并拥有其他人,您必须:

    1. 将 Nexus P2 插件安装到您的实例中,并为您打算使用的存储库启用工件发布。
    2. 将 nexus 作为 maven 存储库添加到 POM 文件中的 maven 存储库,以便您可以使用 maven deploy 上传插件。
    3. 添加与 am eclipse P2 存储库相同的连接,以便您的 tycho 构建可以下载您的插件
    4. 构建您的工件(maven 安装)
    5. 将您的工件部署到 nexus(maven 部署)
    6. 为那些想要通过 tycho 重用您的 tycho 服务器地址的人提供。

    注意事项:

    • Tycho 构建是 Eclipse 构建,Eclipse 构建与 P2 存储库一起使用,远程 maven 存储库不受支持,因为 Eclipse 根据依赖要求从存储库中挑选最佳版本。这会导致 maven 存储库的流量丢失并且速度太慢。
    • Nexus P2 插件公开的唯一工件是插件(也称为 OSGI 包)。 Eclipse 有其他与构建中重用相关的项目,例如特性和产品。因此,如果有人想重复使用这些项目,您必须在其他地方为他们托管 tycho 构建生成的 P2 存储库。
    • 如果您重复调用“deploy”,如果您正在构建 SNAPSHOT,每个工件都会有一个新的次要版本号。 Eclipse(以及因此 Tycho)不知道快照的概念,而是会部署一个带有时间戳的版本。这可能会导致您的联系被填满。

    【讨论】:

    • 我相信 unzip 插件避免了对 nexus p2 插件的需要。相反,zip 文件的内容是可用的,就好像它已在某处的网络服务器上解压缩一样。这允许所有 p2 数据可用,而不仅仅是 nexus p2 插件支持的插件。
    猜你喜欢
    • 2015-10-04
    • 2016-05-22
    • 2020-03-02
    • 2022-11-11
    • 1970-01-01
    • 2019-03-08
    • 2018-02-22
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多