我有一個用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。 –