PluginWrapper.getDependencies() 和 UpdateSite.Plugin.dependencies 的行为差异

Difference in behavior of PluginWrapper.getDependencies() and UpdateSite.Plugin.dependencies

任何人都可以解释这两个 API 之间的行为差​​异吗?我唯一能弄清楚的是 UpdateSite 的依赖属性似乎完全反映了每个插件的 MANIFEST.MF 文件中声明的依赖关系。 PluginWrapper API 通常 return 更多依赖项,但 "extra" 依赖项的性质 return 尚不清楚。我认为这可能是传递依赖关系,但手动跟踪一些插件的 2 阶和 N 阶依赖关系似乎并没有反映出这一点。

这是一个示例控制台脚本:

final plug = 'nodelabelparameter'
println "Plugin-Plugin Dependencies for $plug:\n"

println 'PluginManager/PluginWrapper'
println '-' * 80
println Jenkins.instance.pluginManager.getPlugin(plug).dependencies
println Jenkins.instance.pluginManager.getPlugin(plug).optionalDependencies

println '\nUpdateCenter/UpdateSite.Plugin'
println '-' * 80
println Jenkins.instance.updateCenter.getPlugin(plug).dependencies
println Jenkins.instance.updateCenter.getPlugin(plug).optionalDependencies

println '\nUpdateCenter/UpdateSite.Plugin alt'
println '-' * 80
println Jenkins.instance.updateCenter.getPlugin(plug).getNeededDependencies()

并输出:

Plugin-Plugin Dependencies for nodelabelparameter:

PluginManager/PluginWrapper
--------------------------------------------------------------------------------
[token-macro (1.9), jquery (1.7.2-1), parameterized-trigger (2.22;resolution:=optional), matrix-auth (1.0.2), windows-slaves (1.0), antisamy-markup-formatter (1.0), matrix-project (1.0), junit (1.0)]
[parameterized-trigger (2.22;resolution:=optional), matrix-auth (1.0.2), windows-slaves (1.0), antisamy-markup-formatter (1.0), matrix-project (1.0), junit (1.0)]

UpdateCenter/UpdateSite.Plugin
--------------------------------------------------------------------------------
[token-macro:1.9, jquery:1.7.2-1]
[parameterized-trigger:2.22]

UpdateCenter/UpdateSite.Plugin alt
--------------------------------------------------------------------------------
[]

这最终由一位主要提交者在另一个论坛中进行了回答。简而言之,行为上的差异是曾经与核心 Jenkins 捆绑在一起的少数插件的产物。可以推测其他插件依赖于这些插件:

Google Groups jenkinsci-dev response from Cloudbees' Jesse Glick