Tycho:带有平台过滤器的P2 Repo镜子

时间:2015-01-29 15:55:54

标签: eclipse eclipse-rcp tycho mirror p2

我正在开发由多个插件和功能组成的Eclipse RCP应用程序。

除此之外,功能还通过根文件提供与平台相关的本机库。

我成功地设法打包我的应用程序并使用Tycho创建一个P2存储库。

现在我正在尝试创建一个只包含win32 x86平台工件的存储库副本。按照此链接https://wiki.eclipse.org/Tycho/Additional_Tools#mirror_goal的说明,我尝试使用Tycho的mirror目标。这是我写的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mirror</artifactId>
    <groupId>group</groupId>
    <version>1.0.0-SNAPSHOT</version>
    <name>Win32 Mirror</name>

    <packaging>pom</packaging>
    <properties>
        <tycho-version>0.22.0</tycho-version>
        <tycho-extras-version>0.22.0</tycho-extras-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.tycho.extras</groupId>
                <artifactId>tycho-p2-extras-plugin</artifactId>
                <version>${tycho-version}</version>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>mirror</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <source>
                        <!-- Full Repository -->
                        <repository>
                            <url>${project.baseUri}/full_repository/</url>
                            <layout>p2</layout>
                        </repository>
                    </source>

                    <filter>
                        <osgi.os>win32</osgi.os>
                        <osgi.ws>win32</osgi.ws>
                        <osgi.arch>x86</osgi.arch>
                    </filter>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project> 

但是,当我尝试创建镜像时,出现以下错误:

Failed to execute goal org.eclipse.tycho.extras:tycho-p2-extras-plugin:0.22.0:mirror (default)
on project mirror: Error during mirroring:
Mirroring failed: Problems resolving provisioning plan.
[my.feature_root.gtk.linux.x86_64 1.0.0.201501291243 cannot be installed in
this environment because its filter is not applicable.]

正如您所看到的,当Tycho遇到原始存储库中win32 x86以外的体系结构的二进制功能根文件时,它无法创建镜像。

您对如何创建仅针对所需架构的P2存储库镜像有任何建议吗?

1 个答案:

答案 0 :(得分:2)

如果您在构建应用程序期间构建存储库(例如,通过tycho-p2-director-plugin,则可以使用Maven profiles构建不同的存储库。一个配置文件可以使用您的标准设置(例如,所有平台),另一个平台只能使用win32.x86特定的目标平台,例如父POM <build><plugins>部分的下面片段中指定的。

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>target-platform-configuration</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <resolver>p2</resolver>
      <environments>
        <environment>
          <os>win32</os>
          <ws>win32</ws>
          <arch>x86</arch>
        </environment>
      </environments>
    </configuration>
  </plugin>