Java 为什么Hudson会忽略我的profiles.xml文件?

Java 为什么Hudson会忽略我的profiles.xml文件?,java,maven-2,continuous-integration,hudson,Java,Maven 2,Continuous Integration,Hudson,我有一个Maven2项目,具有相同级别的pom.xml和profiles.xml文件。 项目配置由Maven profile properties提供: dbhost=${dbhost} dbport=${dbport} // etc. 在本地,每个开发人员在“profiles.xml”中定制自己的构建。它工作得很好 为了实现持续集成,我们在SCM服务器上安装了一个ci“profiles.xml”(与pom.xml处于同一级别) 问题是Hudson在Maven构建期间忽略了这个文件,而“-p

我有一个Maven2项目,具有相同级别的pom.xml和profiles.xml文件。 项目配置由Maven profile properties提供:

dbhost=${dbhost}
dbport=${dbport}
// etc.
在本地,每个开发人员在“profiles.xml”中定制自己的构建。它工作得很好

为了实现持续集成,我们在SCM服务器上安装了一个ci“profiles.xml”(与pom.xml处于同一级别)

问题是Hudson在Maven构建期间忽略了这个文件,而“-p hudsonprofile”设置正确

如果在“pom.xml”或全局“settings.xml”中直接移动相同的概要文件,则构建工作正常。所以我们已经有了一个解决方案

我还知道“profiles.xml”文件已被弃用,但我想了解为什么Hudson build和我的本地build之间的组件不同


注意:Hudson和我的本地版本使用相同版本的Maven(2.2.1)。

我认为最好的解决方案是直接在pom.xml文件中为两个CI定义概要文件,然后为本地版本定义概要文件。然后,开发人员可以覆盖他们自己的personal settings.xml文件中用于本地构建的任何概要文件设置。这还有一个额外的好处,即不必签入profiles.xml文件,因为该文件对开发人员不起作用,迫使他们修改这个版本化的文件,并记住不要签入他们的更改。这还有一个额外的好处,就是使您的构建不依赖于Maven不推荐的特性。毕竟,我从一开始就不会指望一个不推荐的特性的行为。希望这是一个优雅的解决方案,它使用了您所知道的已经有效的思想。

听起来像是类路径问题。为什么Hudson没有注意到profiles.xml?我能想到的唯一原因是Hudson使用的类路径与您预期的不同

最佳实践(至少在我的经验中)是尝试从CI服务器(Hudson运行的地方)上的命令行构建项目。如果这行得通,那么哈德逊也应该行得通。除非你在哈德逊古怪地配置了Maven

另外,调整Maven的settings.xml也没那么糟糕。至少,如果你不期望它改变太多的话。即便如此,它也很快得到了修复