【发布时间】:2016-02-12 07:04:51
【问题描述】:
我有一个 osgi 项目,它分为 3 个存储库。每个存储库都有自己的使用 Tycho 构建到 p2 存储库中:
Repo1 -> P2 repo 1
Repo2 -> P2 repo 2
Repo3 -> P2 repo 3
此外,每个存储库都有一个目标定义文件,其中包含来自第三方 p2 存储库和其他项目存储库(上述 P2 repo1、P2 repo 2 或 P2 repo 3)的捆绑包。 Repo2 包含对 Repo1 包的依赖项,Repo3 对 Repo1 和 Repo2 包有依赖项:
Repo1 Target Definition -> Eclipse Orbit P2
Repo2 Target Definition -> Eclipse Orbit P2, P2 repo1
Repo3 Target Definition -> Eclipse Orbit P2, P2 repo1, P2 repo2
现在我有以下问题。构建第一个存储库后,P2 repo1 存储库更新并包含具有新快照版本的功能。 Repo2 和 Repo3 的目标定义取决于 Repo1 包的先前快照版本,如果不更新适当的目标定义(在 Eclipse 中目标编辑器中有更新按钮),就不可能构建这些存储库。
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="com.myproduct.feature.api.game.feature.group" version="1.0.0.201509251400"/>
<unit id="com.myproduct.feature.impl.game.feature.group" version="1.0.0.201509251400"/>
<repository location="http:............../target/repository/"/>
</location>
所以不可能自动构建所有 3 个 repos,所以构建过程变得过于复杂:
- 提交第一个 repo 中的更改并使用 Jenkins 构建它
- 更新 repo2 的目标定义,使其指向新版本的 repo 1 功能
- 在 repo2 中提交此更新并使用 Jenkins 构建它
等等……
我现在正在考虑使用 git 子模块来集成这 3 个存储库,以避免 p2 存储库或将所有存储库移动到一个存储库中。
【问题讨论】:
-
我最近遇到了同样的问题,并且一直手动更新目标平台,因为只有一个上游 p2 存储库不经常更改。您是否考虑过将目标平台更新为最新快照的预构建步骤(但不确定这是否真的可行)?
标签: java eclipse osgi eclipse-rcp tycho