Jenkins 插件的 .hpi 和 .jpi 有什么区别?

What is difference between .hpi and .jpi of Jenkins plugins?

我已经通过两种方式安装了 Jenkins 插件,即手动将 .hpi 文件保存在 Jenkins 主目录中,以及从 Jenkins 前端安装(管理 Jenkins > 管理插件)。

我在这里注意到的是,当我手动安装插件(下载为 .hpi 文件)时,它安装了扩展名 .hpi,并且在通过 Jenkins 前端安装插件时,我再次注意到该插件安装为 .jpi.

但是为什么呢?后台发生了什么?我知道功能不会改变,但知道它看起来很有趣。

嗯,我认为这是因为 Jenkins forked from Hudson 所以这就是 hpi 中的 'H'。 J 显然是对此的一种改变。

在技术方面,jpi插件是使用gradle plugin architecture and hpi plugins are generated with the Maven architecture

生成的

最终,正如您所发现的,两者都生成了 Jenkins 可以使用的插件。绝大多数是使用 Maven 构建的,但我是 Gradle 的粉丝,因为它与 Groovy 中的开发插件很好地链接在一起。您还可以使用 Maven

构建 Groovy

两者都应该与 Jenkins 在您手动安装时将 hpi 重命名为 jpi 的扩展相同。

您在 JENKINS_HOME 中看到两者的原因是 Jenkins 启动时插件加载的顺序:如果两者都存在,plugin.jpi 优先于 plugin.hpi。这是上传安装确保上传的版本在重启后覆盖现有版本的方式。

$JENKINS_HOME/plugins/ 中的插件应始终使用 .jpi 后缀(基本名称是插件标识符)。通常 Jenkins 会在 uploading a plugin manually 时强制执行此命名模式,无论您使用什么文件名上传,所以我不确定您如何在这里获得 *.hpi 文件,除非您直接将其复制到这个文件系统位置。