如何只在Jenkins上执行一个子模块的包?

时间:2013-08-06 09:00:56

标签: jenkins sbt

我有一个包含4个模块的sbt项目:module-amodule-bmodule-cmodule-d

每个模块都可以打包为WAR。我想在Jenkins上设置一个部署,它只构建4个模块中的一个并将其部署到容器中。

详细地说,我希望有4个Jenkins工作 - job-ajob-bjob-cjob-d,每个工作只构建定义的模块(a到d)。

目前,我正在使用clean update test package作为Jenkins sbt构建的命令,但这会导致打包所有4个不必要的模块。

我已经尝试了project -module-a clean update test package,但没有运气。

2 个答案:

答案 0 :(得分:10)

您可能还想执行项目范围的cleantest任务,如下所示:

sbt module-a/clean module-a/test

对于以下命令适用于哪个项目,解决方案略短且更清晰。

您不需要执行update任务,因为test隐式执行该任务,如inspect tree test中所述。

有一种方法可以通过别名使其更清洁。在build.sbt

中使用以下内容
addCommandAlias("jenkinsJob4ModuleA", "; module-a/clean; module-a/test")

使用别名,执行jenkinsJob4ModuleA以获得与上述解决方案相同的效果。

答案 1 :(得分:5)

将参数引用到项目,即project module-a,并且不要在子模块的名称前使用破折号。

Jenkins作业的整个命令行将如下所示:

./sbt "project module-a" clean update test