我们有三件工件:
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。
在本地构建项目,将工件安装到本地存储库,效果非常好。
当尝试使用以下序列来运行Hudson构建时,问题就开始了:
不知何故,第5步中的构建使用了旧版本的common.jar,并因此而失败。
common.jar版本号不会改变,让我们说这个例子的目的是1.0.0-SNAPSHOT。
如果我更改common.jar版本号,则构建工作正常。 (据说因为版本号只有一个版本)。
现在,什么可能导致在Hudson构建中使用旧工件?
我们正在使用命令“clean package -e -X -U”
在Hudson上运行maven构建已经检查了“将工件部署到maven存储库”。
答案 0 :(得分:2)
如果不能访问真正的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)检查您的Hudson安装Maven的settings.xml文件。特别是,您需要验证您的distributionManagement,服务器和存储库节中的所有内容。检查此问题的另一个好方法是转到internal.war项目并运行mvn help:effective-settings
,看看它与本地计算机上的内容是否匹配。
有些事情是错误的,通过正确的分析找到它不会花费很长时间。