反应堆项目中不再存在的Maven模块在Jenkins构建报告中显示为“未运行”

时间:2013-09-17 14:17:00

标签: maven jenkins

我有一个多模块maven项目,其中包含嵌套的其他一些reactor子模块。结果,我有一个3级模块层次结构。

在过去,我重构了层次结构,将一些嵌套模块从一个移动到另一个。我也修改了一些模块的名称。

在Jenkins上,旧模块 - 现在不存在 - 在构建报告中显示为“未运行”。当我在本地进行maven安装时,这些模块不会出现在反应堆摘要中。

这种行为是以某种方式预期的吗? 我的意思是,jenkins中是否有任何设置使反应堆转轮记住旧的子模块?

启用“在构建开始之前删除工作区”选项。

3 个答案:

答案 0 :(得分:17)

如果由于某种原因,删除所有已禁用的模块不可用,则您可以在管理Jenkins - >中运行this Groovy script 脚本控制台

import hudson.model.*
import hudson.maven.*

hudson.model.Hudson.instance.items.findAll{job -> job instanceof MavenModuleSet}.each {

  job ->
  println("Job: " + job.name)  
  job.getModules().each {
    module ->
    print("  " + module.name + " (disabled = " + module.disabled + ")")
    if ("someModuleYouNoLongerWant".equals(module.name)) {
      module.delete() 
      println(" <-- deleted module " + module.name)
    } else {
      println("");
    }    
  }  
}

使用方法:

  • 首先运行脚本而不进行任何编辑(这是安全的,真的!)
  • 浏览模块列表以找到您要删除的模块
  • 将占位符someModuleYouNoLongerWant替换为您不再需要的模块名称
  • 再次运行(已编辑)脚本

副作用:过去仍然拥有该模块的任何归档版本将不再具有已删除的模块。在我的用例中,这是可以接受的。

答案 1 :(得分:16)

您是否在项目页面上尝试了配置模块之间的删除所有已禁用模块操作?

答案 2 :(得分:0)

这是一个脚本,它将遍历所有maven作业,并删除所有在上次成功构建中未运行的模块。

header-includes: |
   ```{=latex}
   \usepackage{fancyhdr}
   \pagestyle{fancy}
   \fancyhead{}
   \fancyfoot{}
   \lhead{My Title}
   \rhead{My Note}
   \lfoot{\today}\rfoot{Page \thepage}
   ```

使用方法:

  • 无需编辑即可运行
  • 浏览更改列表以检查是否有误删除
  • 取消注释import jenkins.model.Jenkins import hudson.maven.MavenModuleSet import hudson.model.Result Jenkins.instance.items.findAll({job -> job instanceof MavenModuleSet}).each { job -> build = job.getLastBuild() if(build && build.getResult() == Result.SUCCESS) { println("==> Processing job " + job.name) build.getModuleBuilds().each { module, build -> if(build.isEmpty()) { //module.delete() println(" --> Deleted module " + module.name) } } } else { println("Warning: Skipped job " + job.name + " because its last build failed.") } } return null ,然后再次运行