我永远忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么。 谷歌搜索经常导致沮丧而不是答案。 所以,因为今天我实际上找到了这些规则的简要列表,所以我想在这里重新发布它们,并进行一些小的修改以帮助阐明。

OSGi插件版本范围

对包和软件包的依赖项具有关联的版本范围,该版本范围使用间隔符号指定:方括号“ [”或“]”表示范围的包含端,而圆括号“(”或“)”表示排除端的范围。 如果范围的一端包括在内而另一端不包括在内,则允许将圆括号与方括号配对。 下面的示例清楚地说明了这一点。

如果在需要版本范围的地方使用了单个版本号,则这并不表示单个版本,而是范围从该版本开始,包括所有更高版本。

常见的情况有四种:

  • “严格”版本范围,例如[1.2.3,1.2.3],它表示该版本,并且仅表示该版本。
  • “半开”范围,例如[1.2.3,2.0.0),具有包含下限和专有上限,表示版本1.2.3和此后的任何版本,但不包括以下内容:版本2.0.0。
  • “无边界”版本范围,例如1.2.3,表示版本1.2.3和所有更高版本。
  • 没有版本范围,表示可以接受任何版本。 不推荐

可以在此处 ( 或以PDF格式 ) 查看以上代码段的 全文 。

例:

Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)", org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)", org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)", org.eclipse.ui.navigator;bundle-version="3.5.100", com.ibm.icu

也可以看看:

  • 插件清单 t(plugin.xml)
  • osgi捆绑清单 (MANIFEST.MF)

在功能清单(feature.xml)规则方面, help.eclipse.org具有非常好的文档,但是要记住的最重要的内容以及我经常要查找的内容是如何陈述所需上游功能的匹配规则和插件。 经验表明,最好明确声明事物,这样就无需进行下游猜测,并且阅读清单的人都确切知道您的功能所需要的版本或与您的功能兼容的版本。 另外,虽然您可能正在使用PDE UI进行构建,但是其他人可能正在使用Tycho和Maven,并且每种工具都可以以自己的方式解释丢失的元数据。

如有疑问,请说清楚。

有效值和处理如下:

  • 如果未指定version属性,则忽略match属性(如果已指定)。
  • 完美 –依赖的插件版本必须与指定版本完全匹配。 如果“ patch”为“ true”,则假定为“ perfect”,并且无法设置其他值。 [1.2.3,1.2.3]
  • 等效 –依赖的插件版本必须至少为指定的版本或更高的服务级别(主要和次要版本级别必须等于指定的版本)。 [1.2.3,1.3)
  • 兼容 –依赖的插件版本必须至少为指定的版本,或者为更高的服务级别或次要级别(主版本级别必须等于指定的版本)。 [1.2.3,2.0)
  • GreaterOrEqual –依赖的插件版本必须至少为指定的版本,或者更高级别的服务(次要或主要级别)。 1.2.3

上面的摘录的全文可以在这里看到 。

例:

<requires><import feature="org.eclipse.m2e.feature" version="1.0.0" match="compatible"/><import feature="org.maven.ide.eclipse.wtp.feature" version="0.13.0" match="greaterOrEqual"/><plugin id="ch.qos.logback.classic" version="0.9.27.v20110224-1110" match="greaterOrEqual"/><plugin id="ch.qos.logback.core" version="0.9.27.v20110224-1110" match="greaterOrEqual"/><plugin id="ch.qos.logback.slf4j" version="0.9.27.v20110224-1110" match="greaterOrEqual"/><plugin id="org.slf4j.api" version="1.6.1.v20100831-0715" match="compatible"/><plugin id="com.ning.async-http-client" version="1.6.3.201106061504" match="equivalent"/><plugin id="org.jboss.netty" version="3.2.4.Final-201106061504" match="perfect"/><plugin id="org.hamcrest.core" version="1.1.0.v20090501071000" match="equivalent"/>
</requires>

参考: DivByZero博客上的JCG合作伙伴 Nick Boldt的MANIFEST.MF和feature.xml版本控制规则 。

翻译自: https://www.javacodegeeks.com/2012/04/manifestmf-and-featurexml-versioning.html

MANIFEST.MF和feature.xml版本控制规则相关推荐

  1. manifest.mf._MANIFEST.MF和feature.xml版本控制规则

    manifest.mf. 我永远都忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么. 谷歌搜索经常导致沮丧而不是答案. 因此,因为今天我实际上找到了 ...

  2. maven、gradle 设置MANIFEST.MF配置

    maven.gradle 设置MANIFEST.MF配置 一.说明 二.gradle 设置MANIFEST.MF 三.maven 设置MANIFEST.MF 一.说明 在使用maven.gradle对 ...

  3. Eclipse -- 打包 -- MANIFEST.MF 规则

    Eclipse 提供了用于打包项目的"导出"向导,但本例运行此向导之前先需要创建一个MANIFEST.MF 清单文件,其内容如下: Manifest-Version: 1.0Mai ...

  4. Plugin.xml - Manifest.mf

    为了更好的实现动态加载/卸载插件,Eclipse从3.0开始实现OSGI规范,原先在plugin.xml文件里定义的很多内容都被推荐放在manifest.mf文件里,只有<extension&g ...

  5. MANIFEST.MF

    对模块和元数据进行打包 我们这个模块系统需要一种方法来对模块的内容以及描述导入和导出的元数据进行打包,将其包括到一个可部署的单元中. Java 已经有了标准的部署单元:JAR 文件.JAR 文件可能并 ...

  6. MANIFEST.MF文件全面解析

    (一)简介 当我们用Jar命令打完包后,会在根目录下面创建META-INF目录,该目录下面会有一些对该Jar包信息的描述,其中肯定会有一个MANIFEST.MF文件,该文件包含了该Jar包的版本.创建 ...

  7. Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析

    首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压.可以看到里面有一个META-INF文件夹,里面就是签名验证的文件.有三个文件MANIFEST.MF.CERT.SF.CERT.RSA分 ...

  8. Java 打 jar 包时,MANIFEST.MF 文件详解

    具体详情,详见<MANIFEST.MF文件详解> manifest.mf 的编写规则 不能有空行和空格的地方 第一行不可以是空行(第一行的行前不可以有空行),行与行之间不能有空行,每行的行 ...

  9. Maven打包自定义MANIFEST.MF键值对

    编写java后,一般都是通过打包生成jar.war包提供使用,一般在打包后都会在jar包中生成MANIFEST.MF文件 编写一个简单的java文件. package cn.kanyun;public ...

最新文章

  1. ab串(要求a在b的右面)
  2. 双目图像超分辨:现状、挑战与展望
  3. 使用Ef框架进行分页..EF模糊查询..EF多表内连接查询
  4. c++ mat to numpy array
  5. 接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程
  6. GCD学习之dispatch_barrier_async
  7. 单例模式应用场景_三、单例模式详解
  8. 网和aoe网的区别_欧哲门窗的金刚网和其他品牌的有什么区别?
  9. 1004 成绩排名 (20 分)(c语言实现)
  10. 201771010102 常惠琢《面向对象程序设计(java)》第八周学习总结
  11. mysql 存储xml类型_(MariaDB)MySQL数据类型详解和存储机制
  12. 小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
  13. SM2证书的鉴定方法
  14. Ubuntu 查询IP地址,设置静态IP、网关
  15. Map接口、HashMap、LinkedHashMap
  16. 初级软件测试工程师工资(薪资待遇)一般是多少?
  17. 【多线程基础】 保证线程安全的总结
  18. DANN困扰解决-交替训练数据
  19. 如何创建数仓指标体系?指标建模的基础理论
  20. RHEL 7特性说明(八):联网与认证

热门文章

  1. vue框架项目部署到服务器_在浏览器中在线尝试无服务器框架项目!
  2. 度量空间的应用_使用Dropwizard度量标准监视和测量无功应用
  3. java7和java8切换_切换表达式到Java吗?
  4. 参数化测试 junit_JUnit 5 –参数化测试
  5. jboss项目导入idea_如何导入任何JBoss BRMS示例项目
  6. javaone_JavaOne 2015 –又一年,又向前迈进了一步
  7. apache flume_Flume:使用Apache Flume收集客户产品搜索点击数据
  8. java8根据某个id删选_Java 8可选:如何使用它
  9. java与java ee_使用Java EE的ManagedExecutorService异步执行事务
  10. drools6.5_使用Drools 6.0进行部署