Выполнение подстановок в файле конфигурации продукта Eclipse с помощью tycho

У меня есть продукт 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, похоже, вообще не выполняет фильтрацию ресурсов для этого типа упаковки. Или??

Я пробовал много разных вещей, но я не могу заставить его работать. Я думаю, что мне нужно настроить жизненный цикл, но как...

Может ли кто-нибудь помочь мне с этим?


person Tonny Madsen    schedule 02.05.2012    source источник


Ответы (2)


это известная ошибка:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=362252

person jsievers    schedule 03.05.2012
comment
Спасибо. Я сделал себе CC'ed по этому поводу. - person Tonny Madsen; 03.05.2012

Вам не нужно явно указывать версии в файле categories.xml. Просто укажите 0.0.0 в качестве версии, и Tycho заменит ее актуальной версией включенной функции.

person oberlies    schedule 19.07.2012