我有 2 个SVN
存储库,用于项目,例如Project1
和Project2
.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
的批处理文件。
此批处理文件现在已成功安装Project2
inProject1
。
我试图实现的是再次自动化这些步骤,即一旦我使用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来构建你的项目
构建项目2
创建 p2 存储库: 您可以使用此 maven 插件来创建 p2 存储库。
将其上传到工件存储库:在这里我们使用Nexus作为工件存储库。按照此处提到的设置 Nexus 下的所有 10 个步骤进行操作。
我创建了一个参考 pom.xml它可以创建一个 p2 存储库并将其上传到 p2 存储库。您可以在此处看到它。
- 在项目 A 中,可以将功能站点添加到指向项目 B 的 p2 站点的目标平台。你可以在这里参考vogella关于第谷的文章。