我有一个多模块maven项目,其中包含嵌套的其他一些reactor子模块.结果,我有一个3级模块层次结构.
在过去,我重构了层次结构,将一些嵌套模块从一个移动到另一个.我修改了一些模块的名称.
在Jenkins上,旧模块 - 现在不存在 - 在构建报告中显示为"未运行".当我在本地进行maven安装时,这些模块不会出现在reactor摘要中.
这种行为是以某种方式预期的?我的意思是,在jenkins中是否有任何设置使反应堆转轮记住旧的子模块?
启用"在构建开始之前删除工作空间"选项.
Ame*_*sse 17
如果由于某种原因,删除所有已禁用的模块不可用,则可以在Manage Jenkins - > Script Console中运行此Groovy脚本.
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("");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用:
someModuleYouNoLongerWant您不再需要的模块的名称副作用:过去仍然具有该模块的任何归档构建将不再具有已删除的模块.在我的用例中,这是可以接受的.
这是一个脚本,它将遍历所有 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
Run Code Online (Sandbox Code Playgroud)
如何使用:
module.delete()并再次运行它| 归档时间: |
|
| 查看次数: |
5683 次 |
| 最近记录: |