插件元数据
插件元数据文件是一个 JSON 文件,其中包含加载插件库所需的所有信息,如确定插件是否加载及加载顺序(例如,根据依赖关系)。此外,它还包含关于创建者、用途以及如何找到更多信息等文本描述。该文件必须位于编译插件时包含搜索路径之一,且必须具有 .json
扩展名。JSON 文件将作为元数据编译到插件中,然后由 Qt Creator 在加载插件时读取。
主要键
用于识别您的插件并定义默认加载行为的默认键包括必修键 Name
和 Version
,以及可选键 CompatVersion
、Experimental
、DisabledByDefault
、Required
和 Platform
。
键 | 值类型 | 含义 |
---|---|---|
Name | 字符串 | 此用作插件标识符,例如可以在其他插件的依赖项中引用。 |
Version | 字符串 | 版本字符串 x.y.z_n ,用于识别插件。另见 插件版本的说明。 |
CompatVersion | 字符串 | 可选。如果未指定,则默认设置为与 Version 相同的值。兼容版本表明当前版本的插件与哪些版本的插件二进制兼容,并用于解决对当前插件的依赖关系。例如,Version 的 2.1.1 和 CompatVersion 的 2.0.0 表示插件版本 2.1.1 与插件版本 2.0.0 及以下所有版本二进制兼容(包括 2.0.0 )。 |
Experimental | 布尔值 | 可选。默认为 false 。实验性插件默认不加载,但必须由用户手动启用。此属性应启用对于可能影响用户体验的新插件。 |
DisabledByDefault | 布尔值 | 可选。默认为 false 。如果设置为启用,则相应的插件默认不加载,但必须由用户手动启用。这应该用于预计不会有很多用户使用,不足以证明额外资源消耗的插件。 |
Depreciated | 布尔值 | 可选。默认为 false 。过时插件默认不加载,但必须由用户手动启用。此属性是插件不再受支持的提示,可能会对用户体验产生负面影响。 |
SoftLoadable | 布尔值 | 可选。默认为 false 。软加载插件可以在运行时加载,无需重启。这对于仅挂钩支持运行时更新的功能的插件是可能的。 |
Required | 布尔值 | 可选。默认为 false 。用作指向 关于插件... 对话框的提示,表示用户可能无法手动禁用此插件。仅用于核心插件。 |
Platform | 字符串 | 可选。匹配插件工作的平台名称的正则表达式。省略此标签意味着插件在所有平台上加载。 |
插件描述键
这些仅用于对插件进行更详细的(用户为中心)描述。所有这些都是可选的。
键 | 值类型 | 含义 |
---|---|---|
类别 | 字符串 | 默认为工具 。用于在插件概览关于插件…中将相关插件放在同一树节点下。 |
供应商 | 字符串 | 描述插件创建者/供应商的字符串,如MyCompany 。 |
版权 | 字符串 | 简短的版权声明,如(C) 2016 MyCompany 。 |
许可 | 字符串或字符串数组 | 关于插件的许可信息,可能多行。应保持相对简短,因为UI未设计用于长文本。 |
描述 | 字符串 | 该插件应提供的内容的简要描述。当运行Qt Creator时显示-version 。 |
长描述 | 字符串或字符串数组 | 关于插件应提供的内容的可能多行、更详细描述。应保持相对简短,因为UI未设计用于长文本。 |
Url | 字符串 | 有关插件的更多信息链接,如http://www.mycompany-online.com/products/greatplugin 。 |
依赖关系
插件可以依赖其他插件。这些在插件元数据中指定,以确保在其他插件加载之前加载这些插件。
依赖关系使用Dependency
键声明,其中包含一个包含必需键Name
和Version
的JSON对象数组,以及可选键Type
。
以下公式说明了依赖信息如何匹配。在公式中,所需的插件名称(如依赖对象中定义的Name
)表示为DependencyName
,所需的插件版本表示为DependencyVersion
。如果给定插件的Name
、Version
和插件元数据中定义的CompatVersion
与依赖关系匹配,则该插件与依赖关系匹配
- 其
Name
与DependencyName
匹配,并且 CompatVersion <= DependencyVersion <= Version
.
例如,一个依赖项
{ "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" }
会被一个具有
{ "Name" : "SomeOtherPlugin", "Version" : "3.1.0", "CompatVersion" : "2.2.0", ... }
的插件匹配,因为名称匹配,且依赖项标签中给出的版本2.3.0_2
位于范围2.2.0
和3.1.0
内。
键 | 值类型 | 含义 |
---|---|---|
依赖项 | 依赖对象数组 | 描述了对其他插件的依赖关系。 |
依赖对象是一个JSON对象,具有以下键
键 | 值类型 | 含义 |
---|---|---|
Name | 字符串 | 该插件依赖于的插件名称。 |
Version | 字符串 | 插件必须与之兼容的版本,格式为x.y.z_n 。如果版本无关紧要,则可以留空。 |
类型 | 字符串 | 可选。值Required 、Optional 或Test 。定义了依赖关系是硬需求、可选的还是用于运行插件的测试的需求。默认为Required 。 |
可选依赖关系
插件可以通过在依赖对象中添加"Type" : "Optional"
来指定对另一个插件的依赖关系是可选的
- 如果依赖关系可以解决,那么插件和其依赖关系将被加载并初始化,就像
Required
依赖关系一样。 - 如果依赖关系无法解决,则插件将被加载并初始化,就像未声明依赖关系一样。
插件没有任何方式得知存在可选依赖项。由于可能有或没有加载依赖项,插件可能也不会链接到依赖项。从可选依赖项访问对象的一种常见方式是通过全局对象池通过ExtensionSystem::PluginManager::getObjectByName() 获取对象,并使用QMetaObject函数调用其上的函数。
测试依赖项
当用户使用-test
命令行参数运行应用程序时,只会加载指定的插件及其依赖项。这样做的目的是通过避免加载不必要的插件来加快测试执行速度。
通过使用"Type" : "Test"
说明依赖项,插件可以指定其运行测试所需但正常执行时不需要的附加依赖项。测试依赖项将强制加载,并且不影响加载顺序。
此类依赖项不是可传递的。
命令行参数
插件可以注册用户在启动应用程序时可以提供的命令行参数。当用户使用-help
命令行参数运行应用程序时,这些命令行参数将与一行描述一起显示,并根据这些信息进行插件管理器的命令行解析和有效性检查。如果插件管理器发现与插件匹配的命令行参数,则将其传递到插件initialize()函数。
命令行参数通过键Arguments
定义,其中包含一个参数对象数组。每个单独的参数对象都有必需的键Name
,以及可选的键Parameter
和Description
。
键 | 值类型 | 含义 |
---|---|---|
参数 | 参数对象数组 | 描述插件想要处理的命令行参数。 |
参数对象是一个包含以下键的JSON对象
键 | 值类型 | 含义 |
---|---|---|
Name | 字符串 | 命令行参数本身,包括- 前缀,例如:-my-parameter 。 |
参数 | 字符串 | 可选。如果给出了,则命令行参数期望一个附加参数,例如:-my-parameter somevalue 。此属性值用作参数的非常短的用户描述。 |
描述 | 字符串 | 可选。命令行参数帮助的参数描述(一行)。 |
示例 Test.json
{ "Name" : "Test", "Version" : "1.0.1", "CompatVersion" : "1.0.0", "Vendor" : "My Company", "Copyright" : "(C) 2016 MyCompany", "License" : [ "This is a default license bla", "blubbblubb", "end of terms" ], "Category" : "My Company Additions", "Description" : [ "This plugin is just a test.", "It demonstrates the great use of the plugin meta data." ], "Url" : "http://www.mycompany-online.com/products/greatplugin", "Arguments" : [ { "Name" : "-variant", "Parameter" : "fancy|boring", "Description" : "Brings up the fancy or boring user interface" } ], "Dependencies" : [ { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" }, { "Name" : "EvenOther", "Version" : "1.0.0" } ] }
其他元数据
键 | 值类型 | 含义 |
---|---|---|
.mime.types | 字符串或字符串数组 | 可能是多行XML MIME-info,用于注册其他或修改内置MIME类型。 |
JsonWizardPaths | 字符串数组 | 相对于插件位置的路径列表或Qt资源系统的路径,后者用于搜索基于模板的向导。 |
关于插件版本的注意事项
插件版本的形式为 x.y.z_n
,其中,x
、y
、z
和 n
是非负整数。您无需使用这种完整形式指定版本 - 任何未指定的部分都将隐式设置为0。因此,2.10_2
等于 2.10.0_2
,而1
与 1.0.0_0
相同。
©2024Qt公司有限公司。本文件中包含的文档贡献物是各自所有者的版权所有。本文件提供的文档根据Free Software Foundation发布的GNU自由文档许可版1.3条款进行许可。Qt及其相关标志是该公司在芬兰和/或世界其他国家的商标。所有其他商标均为各自所有者的财产。