У меня есть продукт Eclipse RCP, который я создаю с помощью Tycho. После некоторых небольших проблем это работает довольно хорошо, и у меня есть как CI, так и релизы, как я хотел.
Рассматриваемый продукт предоставляется как в виде устанавливаемого автономного приложения RCP, так и в виде сайта обновлений, поэтому функциональные возможности могут быть установлены в стандартной установке 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, похоже, вообще не выполняет фильтрацию ресурсов для этого типа упаковки. Или??
Я пробовал много разных вещей, но я не могу заставить его работать. Я думаю, что мне нужно настроить жизненный цикл, но как...
Может ли кто-нибудь помочь мне с этим?