在多个Maven作业之间共享签出的代码库

时间:2017-03-24 16:03:01

标签: maven jenkins

由于某些遗留原因需要重构,我们的构建层次结构中的一个子项目需要两个独立的Maven版本,每个版本都有自己的WAR文件。从本质上讲,我不应该详细了解这个问题,该项目应该分成两个项目,每个项目都有自己的WAR但还没有(PM不会分配时间去做)所以我们通过运行两个单独的构建来解决每个构建的特性,用它们自己的POM概要来表示。

mvn clean verify -P foo使foo.war脱离了mvn clean verify -P bar使bar.war成为同一个项目。

我正在处理CI,我需要Jenkins - 让项目生效。我安装了Maven plugin,但源代码管理部分允许在相对于作业工作空间根目录的目录中检出本地代码库,并且每个作业只允许一个mvn构建。这让我可以选择有两个单独的作业,每个作业都会检查自己的本地代码库快照,这是一个过度的IMO。

如果有一种方法可以让foo作业在不在其工作空间内部的目录中检出,bar也可以访问,而$param = 'ojkhalskdjfhs9df87as08df'; $this->insert($collection, [ 'aaaaa' => new MongoId($param) ]); 也不会使用SCM但是假设存在源代码通过不同的方式(在这种情况下通过job foo或手动),我可以用相同的物理检出源代码运行我的第二个构建,而不必再重复一遍。这只是一种想到的方式,除了可能以某种方式使一个Jenkins工作运行多个构建,但我认为这不是一个选项。

我正在寻找如何在Maven Jenkins插件中解决这个问题的想法,而不是把我的工作当作Jenkins自由风格。

1 个答案:

答案 0 :(得分:1)

您可以创建一个上游作业,从SVN中检出src。此作业触发两个不同的mvn下游作业 - 对于此作业,您将父作业的工作空间作为参数传递。在子流作业中,您必须将此参数用作自定义工作区。

在jenkins中,当我没有完全错误时,您可以在SCM选项上方指定作业的工作区(在高级选项中的某个位置) - 目前没有Jenkins实例可以检查它。

修改: 自定义工作区选项位于以下高级选项的常规部分中"限制此项目可以运行的位置"并被称为"使用自定义工作区"。 如果这对您不起作用,则会有一个名为"的共享工作区"可用,但实际上这不应该在您的情况下。