Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反应堆项目中不再存在的Maven模块在Jenkins构建报告中显示为;没有';“t运行”;_Maven_Jenkins - Fatal编程技术网

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

反应堆项目中不再存在的Maven模块在Jenkins构建报告中显示为;没有';“t运行”;,maven,jenkins,Maven,Jenkins,我有一个多模块maven项目,其中包含嵌套的一些其他反应堆子模块。因此,我有一个3级的模块层次结构 在过去,我重构了层次结构,将一些嵌套模块从一个模块移动到另一个模块。我还修改了一些模块的名称 在Jenkins上,旧模块(现在不存在)在构建报告中显示为“未运行”。当我在本地进行maven安装时,这些模块不会出现在reactor摘要中 这种行为是意料之中的吗? 我的意思是,詹金斯有没有让反应堆运行人员记住旧子模块的设置 “在构建开始之前删除工作区”选项已启用。您是否尝试了项目页面上配置和模块之间可

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

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

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

这种行为是意料之中的吗? 我的意思是,詹金斯有没有让反应堆运行人员记住旧子模块的设置


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

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

如果由于某种原因,删除所有禁用模块不可用,然后您可以在managejenkins->脚本控制台中运行此Groovy脚本(
https:///script
)。基于并改进了这里关于堆栈溢出的反馈

import jenkins.model.Jenkins
import hudson.maven.MavenModuleSet
import hudson.model.Result

Jenkins.instance
    .getAllItems(Job.class)
    .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

如何使用:

  • 先运行脚本,不做任何编辑(这真的很安全!)
  • 浏览更改列表以检查不需要的删除
  • 取消注释
    module.delete()
  • 再次运行(编辑的)脚本

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

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

    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
    
    如何使用:

    • 运行它而不进行编辑
    • 浏览更改列表以检查不需要的删除
    • 取消对module.delete()的注释,然后再次运行它

    没有,我没有,但很明显这是正确的答案。我不知道那个动作。它似乎不是对所有项目用户都可见的-一些我没有的特权是必需的。如果该操作没有出现在页面上怎么办?我也没有该选项。有人知道如何启用它吗?此选项是否仍然存在?这些不是已禁用的模块,而是已删除的模块。这是缓存失效失败的情况。从这个插件转移到一个自由风格的构建。哦,不,它在第一次运行时删除了我的模块“somemoduleyoungorongerwant;”)这就是从堆栈溢出运行随机代码时得到的结果!:-p此外,它还安装了一种病毒,只有牺牲你的长子才能清除该病毒-Dsmall改进:如果文件夹中有Jenkins作业,请将“items”更改为“getAllItems(Job.class)”以获取所有作业,而不仅仅是“top”级别的作业。谢谢!完美的与其他解决方案相比,这节省了大量工作。