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

Posted

技术标签:

【中文标题】Bamboo:更改 Maven 插件的构建根目录?【英文标题】:Bamboo: change the build root for maven plugin? 【发布时间】:2013-12-31 00:32:19 【问题描述】:

我有一个 Bamboo 计划,其中涉及在 Windows 上使用 maven 构建。竹用户下构建目录的默认路径很长,并且某些文件最终超过了 255 个字符的 Windows 限制。我想通过(仅针对此计划)将运行 Maven 的位置更改为一个短目录 C:\build 来解决问题。我可以签出文件,然后运行脚本步骤将它们从构建目录复制到 C:\build。 Maven 竹任务配置为覆盖项目文件,而是使用 C:\build\pom.xml。这一切都很好。但是,当它到达 release:prepare 的“检查更新的 pom”部分时,它以某种方式确定具有长路径的原始构建目录是正确的,并因错误而死。

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

【问题讨论】:

【参考方案1】:

您是否尝试覆盖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 中的多个位置使用它。

【讨论】:

弗拉德,感谢您的评论。我最终不必尝试这个,因为问题结果有些不同。请参阅下面我对自己问题的回答。【参考方案2】:

事实证明,Maven 3.x 任务发生了几件不同的事情:

通过将 Override Project File 设置为 C:\build\pom.xml,我能够获得尝试在 C:\build 中构建的任务。

我将文件从正常根目录复制到 C:\build 的部分内容错误。我使用了 xcopy,但忘记添加 /H 来复制 .svn 数据,因此“签入更新的 pom”步骤失败,因为它找不到 .svn 文件。

release:prepare 和 release:perform 完成后,之前已定义了一个竹“工件复制”步骤,用于将多个生成的工件复制回 maven 存储库。事实证明,虽然这一步对于要复制的文件和在哪里找到它们在某种程度上是可配置的,但它不支持提供绝对路径作为要从中复制的目录,这与 maven 任务的 Override Project File 不同。所以我不得不介绍另一个步骤,一个将生成的工件从 C:\build... 复制回构建根目录下的脚本。

总而言之,我无法像我想要的那样弄乱构建根目录,而是使用 Override Project File 和两个脚本将源文件复制到 C:\build 并将工件从 C 复制回来: \build,我已经完成了我需要做的事情。

【讨论】:

以上是关于Bamboo:更改 Maven 插件的构建根目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Maven 从 Nexus 下载进行部署

使用 Bamboo 构建定义父 POM 的 Subversion/Maven 项目

SoapUI/Maven/Bamboo:Bamboo 作业中的异常

在 Bamboo 中构建之前更改包名称

技术分享|利用maven与bamboo实现应用实时构建和代码检查

获取 Bamboo 上的提交文件列表