P2 控制器,用于将一个构建包含在其他项目更新站点中



我有 2 个SVN存储库,用于项目,例如Project1Project2.Project1是使用Project2的主要应用程序。我试图实现的是,每当使用Jenkins构建Project1时,它都应该包括Project2的更新站点,并自动构建它并在Project1中使用。

Project2包含6个项目和一个更新站点(由artifacts.jar, content.jar. feature/, plugins/, site.xml组成)。

我怎样才能做到这一点?可以使用eclipse P2 director吗?如果是,那怎么做? 如何在Project1中自动化合并Project2更新站点的过程?

更新

简而言之,在Project1中包含Project2更新站点的位置,以便无论何时构建Project1,它都应该使用更新站点自动安装Project2

更新站点 :/pathto/repository/updatesite/

给定链接的内容 :artifacts.jar, content.jar. feature/, plugins/, site.xml

我正在尝试这个命令:

D:EclipseCppeclipseeclipsec.exe -application org.eclipse.equinox.p2.director -repository http:/pathto/repository/updatesite//  -installIU featurename -destination D:EclipseCppeclipse

但它失败了,指出找不到功能名称。

更新 1

到目前为止,我取得了什么成就:

> 使用 Jenkins 成功构建Project1

-> 创建了一个包含Path_inProject1eclipsec.exe -application org.eclipse.equinox.p2.director -repository http:/pathto/repository/updatesite// -installIU featurename -destination Path_inProject1eclipse的批处理文件。

此批处理文件现在已成功安装Project2inProject1

我试图实现的是再次自动化这些步骤,即一旦我使用Jenkins完成构建Project1,它应该触发 Jenkins 的上述命令(可能需要对命令进行一些修改)以将Project2包含在Project1中。这可能吗?

你的 Jenkins 设置应该有 2 个作业。假设 Jenkins 作业 A 构建 Project1,Jenkins 作业 B 构建 Project2。

(1) 将作业 A 设置为

  • 构建项目1

(2) 将作业 B 设置为

  • 构建项目2
  • 将 P2 工件部署到本地目录/repo/project2/p2

(3)在Project1中,一定要在pom.xml中将上面的P2目录指定为一个仓库,像这样

<repositories>
<repository>
<id>project2-p2repo</id>
<url>file:/repo/project2/p2</url>
<layout>p2</layout>
</repository>
[...] 
</repositories>

(4) 在 Jenkins 作业 A 中配置构建触发器:

  • 选择"生成其他项目后生成">
  • 在">要监视的项目">中,选择"Jenkins 作业 B

做。

结果将是:

  • 生成 Project1 时,它将使用 P2 存储库以及 Project2 生成的结果
  • 生成 Project2 时,将使用 Project2 生成的新结果触发项目 1 的生成

我相信你正在使用maven来构建你的项目

  1. 构建项目2

  2. 创建 p2 存储库: 您可以使用此 maven 插件来创建 p2 存储库。

  3. 将其上传到工件存储库:在这里我们使用Nexus作为工件存储库。按照此处提到的设置 Nexus 下的所有 10 个步骤进行操作。

我创建了一个参考 pom.xml它可以创建一个 p2 存储库并将其上传到 p2 存储库。您可以在此处看到它。

  1. 在项目 A 中,可以将功能站点添加到指向项目 B 的 p2 站点的目标平台。你可以在这里参考vogella关于第谷的文章。

最新更新