如何使 Eclipse RCP 在仅限定符更改时不检测更新

How to make Eclipse RCP does not detect updates when only qualifier changed

我正在为 Eclipse RCP 应用程序配置自我更新机制。 除了一点,一切都像魅力一样工作,这是实现的流程:

  1. Maven/Tycho 生成产品及其 p2 存储库
  2. 此存储库 copied/declared 到 -public- 复合存储库
  3. 检测到更新并向用户提出(当然是在从以前版本安装的产品中)

很好!但是...

随着构建重建所有内容 未更改的功能使用新的限定符发布到存储库中,并标记为更新 :-(

我绝对想避免的事情。

阅读这篇文章 Wiki Page 我认为通过使用 p2.composite.repository 的验证属性找到了解决方案,但它没有完成这项工作。这是我的蚂蚁任务:

   <target name="add">
     <p2.composite.repository validate="org.eclipse.equinox.p2.repository.tools.jar.comparator">
     <!--
          also tried with the other comparatorid
     <p2.composite.repository validate="org.eclipse.equinox.artifact.md5.comparator">
     -->
       <repository location="file:/local/www/productname/releases" 
                   name="Product Repository" compressed="false" append="true"/>
       <add>
         <repository location="http://localhost/productname/releases/1.0.0"/>
         <repository location="http://localhost/productname/releases/1.0.1"/>
       </add>
     </p2.composite.repository>
   </target>

1.0.1 中的所有功能都设置为更新,即使其中只有 2 个包含更改并增加了 major.minor.service

提前感谢您的建议。

Reading this Wiki Page I thought to have found the solution by using the validate attribute of p2.composite.repository but it does not do the job.

我认为这个问题不应该在复合存储库级别解决。相反,如果功能未更改,则叶存储库不应包含已更改的限定符。

这正是第谷 Reproducible Version Qualifiers 的用途。如果您的代码位于 Git 存储库中,他们会将限定符与最新提交的时间戳同步。