2012-05-02 45 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会将其替换为包含的功能的实际版本。

相关问题