2012-05-02 85 views
3

我有一個用Tycho構建的Eclipse RCP產品。在一些較小的問題後,這是工作得很好,我有兩個CI和發佈按要求。用tycho執行Eclipse產品配置文件中的替換

有問題的產品既作爲可安裝的獨立RCP應用程序提供,也作爲更新站點提供,因此該功能可以安裝在vanilla Eclipse安裝中。這工作也很好。

該產品有一個主要功能 - 在更新站點上使用 - 我非常希望功能和產品具有相同的版本號。就像今天一樣,這個版本號被提到很多地方,我真的很想把它減少到一個。我目前在

  • 主要特徵的feature.xml版本號
  • 相同功能的pom.xml
  • .product文件爲產品配置文件中的項目
  • pom.xml.product文件
  • categories.xml文件的更新網站
  • about.mappings文件

我試過使用maven資源過濾器,它適用於POM文件和about.mappings,但不適用於其餘部分。這是我目前的主要特徵pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project ...> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>...main.feature</artifactId> 
    <version>${product.version}-SNAPSHOT</version> 
    <packaging>eclipse-feature</packaging> 

    <parent> 
     <groupId>...</groupId> 
     <artifactId>...parent</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../...parent</relativePath> 
    </parent> 

    <build> 
     <!-- Substitutions: product.version --> 
     <resources> 
      <resource> 
       <directory>.</directory> 
       <includes> 
        <include>feature.xml</include> 
       </includes> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
    </build> 
</project> 

當運行這個配置,我從第谷以下異常(或看起來非常相似,它的除外):

[ERROR] Internal error: java.lang.IllegalArgumentException -> [Help 1] 
org.apache.maven.InternalErrorException: Internal error: java.lang.IllegalArgumentException 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
Caused by: java.lang.IllegalArgumentException 
     at org.eclipse.equinox.internal.p2.metadata.VersionParser.parse(VersionParser.java:93) 
     at org.eclipse.equinox.p2.metadata.Version.create(Version.java:79) 
     at org.eclipse.tycho.p2.impl.publisher.FeatureDependenciesAction.getVersion(FeatureDependenciesAction.java:126) 
     at org.eclipse.tycho.p2.impl.publisher.AbstractDependenciesAction.perform(AbstractDependenciesAction.java:79) 
     ... 11 more 

(我已經削減了一些行......)

基本上,嵌入式maven過程似乎根本沒有爲這種類型的包裝執行資源過濾。要麼??

我已經嘗試了許多不同的事情,但我無法讓它工作。我最好的猜測是,我必須配置生命週期,但如何...

任何人都可以幫助我嗎?

回答

1

你並不需要在categories.xml明確指定版本。只需指定0.0.0作爲版本,並且Tycho會將其替換爲包含的功能的實際版本。

相關問題