我有一个用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过程似乎根本没有为这种类型的包装执行资源过滤。要么??
我已经尝试了许多不同的事情,但我无法让它工作。我最好的猜测是,我必须配置生命周期,但如何...
任何人都可以帮助我吗?
谢谢。我已经对此做了CC。 –