jenkins 插件可以使用与主要 jenkins webapp 不同版本的 jar 吗?

Can a jenkins plugin use a different version of a jar than the main jenkins webapp?

我正在开发一个 Jenkins 插件并包含一个 jar 作为依赖项 - 但该 jar 已经包含在主 Jenkins webapp 的 WEB-INF/lib 目录中。这很好,除非我的插件需要版本 X 而 Jenkins 包含版本 Y,并且 api 在它们之间发生了变化,所以我不能使用旧的,而 Jenkins 不能使用更新的。

我想要的版本包含在我的 .hpi 文件中,但在运行时来自 jenkins/WEB-INF/lib 的版本被选中。我猜是由于类加载器的原因,我无法强制它在我的 .hpi 文件中获取版本,但想检查一下是否有人知道这样做的方法?

谢谢。

默认情况下,Jenkins 从 WEB-INF/lib 加载每个 jar,以及 WEB-INF/classes 的内容类 和核心库。

如果您想在这些之前加载自己的库(例如,您想要更新版本的速度或其他库),您可以通过在 pom.xml:

<build>
  <plugins>
    <plugin>
      <groupId>org.jenkins-ci.tools</groupId>
      <artifactId>maven-hpi-plugin</artifactId>
      <configuration>
        <pluginFirstClassLoader>true</pluginFirstClassLoader>
      </configuration>
    </plugin>
  </plugins>
</build>

有关详细信息,请参阅 docs