什么是OSGI版本限定符

Ble*_*eek 5 java eclipse-pde pom.xml tycho maven

我需要确认我怀疑的内容,因为我找不到任何文档,所以这似乎是一个愚蠢的问题,因为我是eclipse PDE的学习者.

原来,

我有一个eclipse插件项目的父项目pom

<version>1.1.0-SNAPSHOT</version>
Run Code Online (Sandbox Code Playgroud)

有两个子项目,他们的poms引用父pom为版本1.1.0-SNAPSHOT.

我能够成功构建项目并拥有一个用于将插件安装到eclipse中的站点.

然后,我想要我的个人临时版本叫做1.1.1-mine.所以我将三个poms修改为1.1.1-mine

我还更新了META-INF/MANIFEST.MF和feature.xml

0.13.0.qualifier
Run Code Online (Sandbox Code Playgroud)

0.13.1.qualifier
Run Code Online (Sandbox Code Playgroud)

但是,构建遇到以下错误.

[错误]无法在项目org.sonatype.m2e.subclipse上执行目标org.eclipse.tycho:tycho-packaging-plugin:0.15.0:validate-version(default-validate-version):OSGi版本1.1.1.qualifier在META-INF/MANIFEST.MF中,与pom.xml中的Maven版本1.1.1-mine不匹配

限定必须是一个行家版关键字?因为,poms中将我的更改为SNAPSHOT后,构建过程没有错误.

如果没有,我做错了什么?

我能做些什么来让我拥有版本1.1.1-mine?

Aar*_*lla 3

简而言之,OSGi.qualifier-SNAPSHOT.

由于 OSGi 不允许版本中包含超过 3 个数字(+ 限定符),因此创建版本-mine有点棘手。

根据常见问题解答,您可以告诉第谷一个字符串,它应该用来替换qualifier为:

 mvn -DforceContextQualifier=mine 
Run Code Online (Sandbox Code Playgroud)

请注意,这会禁用您从 SNAPSHOT 版本获得的所有优点(即您可以多次部署捆绑包)。

  • ...加上这会禁用您从自动限定版本中获得的所有优点:在 p2/Tycho 中,id/版本对唯一标识一个工件,因此如果您修改了工件中的某些内容,并且没有版本更改(自动),您的更改可能不会被下游接受! (2认同)