【问题标题】:Maven WAR overlay problems, while using Hudson + ArtifactoryMaven WAR覆盖问题,同时使用Hudson + Artifactory
【发布时间】: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 构建使用以下序列时,问题就开始了:

  1. 按依赖顺序构建所有项目。
  2. 修改common.jar(比如添加一个新的类方法)
  3. 修改 internal.war 类,使其在编译时依赖于第 2 步中所做的更改。
  4. 提交这两项更改,触发 Hudson 构建。
  5. 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?

标签: maven hudson war


【解决方案1】:

如果没有真正的 poms,很难明确回答这个问题,但我会这样做:

1) 确保 Hudson 使用的 Maven 版本与您在本地计算机上使用的版本完全相同

2) 通过mvn help:effective-pom 在终端中检查 Hudson 机器上 internal.war 的有效 pom.xml,确保运行与 Hudson 作业相同的 mvn 可执行文件。您需要在 internal.war 的有效 pom.xml 中验证 common.jar 的版本。由于配置文件或 settings.xml 的差异,它可能与您的预期不同。

3) 检查 Maven 的 Hudson 安装的 settings.xml 文件。特别是,您需要验证您的 distributionManagement、servers 和 repositories 节中的一切是否正常。检查这一点的另一个好方法是转到您的 internal.war 项目并运行 mvn help:effective-settings 并查看其中的内容是否与您本地计算机上的内容相匹配。

有些地方出了问题,通过正确的分析很快就能找到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2023-03-16
    • 2016-03-28
    • 2015-12-25
    相关资源
    最近更新 更多