如果只有限定符发生更改,Eclipse RCP如何检测更新

时间:2017-10-04 09:20:01

标签: eclipse maven eclipse-rcp tycho p2

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

  1. Maven / Tycho生成产品及其p2存储库
  2. 将此repo复制/声明为-public- composite repository
  3. 检测到更新并将其提升给用户(当然是在以前版本中安装的产品中)
  4. 好的!但...

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

    我绝对想避免这件事。

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

       <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增加了。

    感谢提前获得建议。

1 个答案:

答案 0 :(得分:1)

  

阅读本Wiki页面我认为通过使用p2.composite.repository的validate属性找到了解决方案,但它没有完成这项工作。

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

这正是第谷的Reproducible Version Qualifiers所针对的。如果您的代码驻留在Git存储库中,它们会将限定符与最新提交的时间戳同步。