Bamboo:更改maven插件的构建根目录?

时间:2013-12-31 00:32:19

标签: maven release bamboo

我有一个Bamboo计划,涉及在Windows上使用maven构建。 Bamboo用户下构建目录的默认路径很长,有些文件最终超过255-char Windows限制。我想通过(仅针对此计划)将Mavens运行的位置更改为短目标C:\ build来解决问题。我可以检出文件,然后运行脚本步骤将它们从构建目录复制到C:\ build。 Maven bamboo任务配置为覆盖项目文件,改为使用C:\ build \ pom.xml。一切正常。然而,当它到达'check in the updated pom'部分发布:prepare时,它会以某种方式决定具有长路径的原始构建目录是否正确,因错误而死亡。

有人知道如何指定更新的pom也应该来自C:\ build?我尝试覆盖“工作子目录”条目,但这不允许我指定完整路径,因此C:\ build已经完成。

2 个答案:

答案 0 :(得分:0)

您是否尝试覆盖localRepoDirectory参数?

  

此构建使用的命令行本地存储库目录(如果已指定)。

     

默认值为:$ {maven.repo.local}。

您可以使用property in the POM

设置此参数
<properties>
  <propertyName>C:\build</propertyName>
</properties>
...
<localRepoDirectory>${propertyName}</localRepoDirectory>

可以在Bamboo Maven命令中覆盖它:

mvn -DpropertyName="D:\build" clean package

Bamboo variables也可用于设置propertyName)

您可以使用所需的路径定义单个属性,并在pom.xml中的多个位置使用它。

答案 1 :(得分:0)

原来,Maven 3.x任务发生了几件不同的事情:

  • 通过将覆盖项目文件设置为C:\ build \ pom.xml,我能够尝试使用C:\ build进行构建。

  • 我将部分文件从普通根目录复制到C:\ build是错误的。我使用过xcopy但是忘了添加一个/ H来复制.svn数据,所以'check-in updated pom'步骤失败了,因为它找不到.svn文件。

  • 一旦发布:准备和发布:执行完成,之前已经定义了一个竹子“工件复制”步骤,将几个生成的工件复制回maven存储库。事实证明,虽然这个步骤可以配置哪些文件要复制以及找到它们的位置,但它不支持提供绝对路径作为要复制的目录,这与maven任务的覆盖项目文件不同。所以我不得不引入另一个步骤,一个脚本将生成的工件从C:\ build ...复制回到构建根目录下。

总而言之,我无法像我想的那样搞乱构建根,但是通过使用覆盖项目文件和两个脚本将源文件复制到C:\ build并从C返回工件: \ build,我完成了我需要做的事情。