简体   繁体   English

Jenkins插件获取众多构建器插件中的构建器列表-返回hudson.maven.MavenModuleSet无法转换为hudson.model.Project

[英]Jenkins plugin get list of builders in multy builders plugin - return hudson.maven.MavenModuleSet cannot be cast to hudson.model.Project

I writing Jenkins plugin which contain 2 Builders(builderA & builderB) builderA has several input fields and will added to Jenkins job before builderB builderB has no inputs 我正在编写包含2个Builders(builderA和builderB)的Jenkins插件builderA具有几个输入字段,并且将在builderB builderB没有输入之前添加到Jenkins作业中

I'm using the following code to extract information from builderA during the builderB.perform(AbstractBuild build, Launcher launcher, BuildListener listener) 我正在使用以下代码在builderB.perform(AbstractBuild构建,启动器启动器,BuildListener侦听器)期间从builderA提取信息。

//loop on all the builders in this project and find  BuilderA
//from there we taking the CI/Release
String component;
String version;
Project buildProject = (Project) build.getProject();
List<Builder> blist = buildProject.getBuilders();
for (Builder b : blist) {
    if (b instanceof BuilderA) {
        listener.getLogger().println("BuilderA was found!!);
        BuilderA ba = (BuilderA) b;
        component = ba.getComponent();
        version = ba.getVersion();
        break;
    }
}

This work great if I create Freestyle project . 如果我创建Freestyle项目,则此工作效果很好。

If I create Maven project the line: Project buildProject = (Project) build.getProject(); 如果我创建Maven项目,则该行: Project buildProject =(Project)build.getProject(); throws" java.lang.ClassCastException: hudson.maven.MavenModuleSet cannot be cast to hudson.model.Project 引发“ java.lang.ClassCastException:hudson.maven.MavenModuleSet无法转换为hudson.model.Project

Question:How can I get the list of Builders in Maven project . 问题:如何获取Maven项目中的构建者列表。

I managed to solve the problem. 我设法解决了这个问题。 I change my code to support 2 different Jenkins job types: 我更改代码以支持2种不同的Jenkins作业类型:

List<Builder> blist = new ArrayList<Builder>();
if (build.getProject() instanceof hudson.maven.MavenModuleSet) {
  listener.getLogger().println("Build type: hudson.maven.MavenModuleSet");
  MavenModuleSet mms = (MavenModuleSet) build.getProject();
  DescribableList<Builder, Descriptor<Builder>> dl = mms.getPrebuilders();
  Collection<Builder> c = dl.toMap().values();
  blist.addAll(c);
}
else if (build.getProject() instanceof hudson.model.Project) {
  listener.getLogger().println("Build type: hudson.model.Project");
  Project<?, ?> buildProject = (Project<?, ?>) build.getProject();
  blist = buildProject.getBuilders();
}

also in pom.xml added reference to: 还在pom.xml中添加了对以下内容的引用:

groupId=org.jenkins-ci.main
artifactId=maven-plugin
version=2.0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM