我有一个使用 Tycho 构建的 Eclipse RCP 产品。在一些较小的问题之后,这工作得很好,我有 CI 和想要的版本。
有问题的产品既作为可安装的独立 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>
运行此配置时,我从 Tycho 得到以下异常(或看起来非常相似的异常):
[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 进程似乎根本不为这种类型的打包执行资源过滤。或者??
我尝试了很多不同的东西,但我无法让它发挥作用。我最好的猜测是我必须配置生命周期,但是如何......
有人可以帮我吗?