【发布时间】:2012-02-29 21:49:05
【问题描述】:
我们有三个工件:
common.jar : with common classes.
public.war : depending on the common.jar, contains only public site resources.
internal.war : depends on both common.jar and public.war, adding authentication
information and security context resource files. Also contains
few administration site classes.
目前我以这样的方式构建这些,internal.war overlays 本身与 public.war。
在本地构建项目,将工件安装到本地 repo,效果很好。
当尝试让 Hudson 构建使用以下序列时,问题就开始了:
- 按依赖顺序构建所有项目。
- 修改common.jar(比如添加一个新的类方法)
- 修改 internal.war 类,使其在编译时依赖于第 2 步中所做的更改。
- 提交这两项更改,触发 Hudson 构建。
- Internal.war 构建失败,因为它找不到在步骤 2 中添加的符号。
不知何故,第 5 步中的构建正在使用旧版本的 common.jar,并因此而失败。
common.jar 版本号没有改变,假设它是 1.0.0-SNAPSHOT 以用于本示例。
如果我确实更改了 common.jar 版本号,则构建工作正常。 (大概是因为一个发行版本号只有一个发行版)。
现在,什么可能导致在 Hudson 构建中使用旧工件?
我们正在使用命令“clean package -e -X -U”在 Hudson 上运行 maven 构建
“将工件部署到 maven 存储库”已选中。
【问题讨论】:
-
只是为了确定一下,您是指 Jenkins 还是实际上是 Hudson?