使用目标平台处理使用Tycho构建的Eclipse插件的依赖关系

时间:2015-12-15 15:07:47

标签: eclipse maven eclipse-plugin tycho target-platform

我正在使用Tycho开发一个Eclipse插件,我希望使用目标平台处理我的依赖项,遵循此tutorial中描述的步骤。 但是当我尝试编译我的插件项目(使用干净安装)时,我收到以下错误:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: com.codeandme.tycho.plugin 1.0.0.qualifier
[ERROR]   Missing requirement: com.codeandme.tycho.plugin 1.0.0.qualifier requires 'bundle org.eclipse.ui 0.0.0' but it could not be found

这是我的插件项目的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>com.codeandme.tycho.plugin</artifactId>
    <packaging>eclipse-plugin</packaging>

    <parent>
        <groupId>tycho_example</groupId>
        <artifactId>com.codeandme.tycho.releng</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../com.codeandme.tycho.releng</relativePath>
    </parent>
</project>

,这是父项目的pom.xml(releng):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>tycho_example</groupId>
    <artifactId>com.codeandme.tycho.releng</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <tycho.version>0.22.0</tycho.version>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>



    <build>
        <plugins>
            <plugin>
                <!-- enable tycho build extension -->
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-maven-plugin</artifactId>
                <version>${tycho.version}</version>
                <extensions>true</extensions>
            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>target-platform-configuration</artifactId>
                <version>${tycho.version}</version>
                <configuration>
                    <resolver>p2</resolver>
                    <pomDependencies>consider</pomDependencies>
                    <target>
                        <artifact>
                            <groupId>tycho_example</groupId>
                            <artifactId>com.codeandme.tycho.releng.targetplatform</artifactId>
                        </artifact>
                    </target>
                    <environments>
                        <environment>
                            <os>win32</os>
                            <ws>win32</ws>
                            <arch>x86</arch>
                        </environment>
                    </environments>
                </configuration>
            </plugin>

        </plugins>
    </build>
    <modules>
        <module>../com.codeandme.tycho.plugin</module>

        <module>../com.codeandme.tycho.releng.targetplatform</module>
    </modules>
</project>  

这是我的目标平台的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>com.codeandme.tycho.releng.targetplatform</artifactId>
  <packaging>eclipse-target-definition</packaging>
  <parent>
    <groupId>tycho_example</groupId>
    <artifactId>com.codeandme.tycho.releng</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>../com.codeandme.tycho.releng</relativePath>
  </parent>
  <groupId>tycho_example</groupId>
</project>

最后是目标平台的.tpd:

target "Tycho Tutorial"

with source requirements

location "http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/repository/" mars-orbit {
    org.apache.commons.lang3
}

location "http://download.eclipse.org/releases/mars" mars-release {
    org.eclipse.platform.feature.group
    org.eclipse.equinox.executable.feature.group
    org.eclipse.e4.rcp.feature.group
    org.eclipse.ui.trace
    org.eclipse.pde.feature.group
}

任何形式的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

在目标定义中,您添加了org.eclipse.e4.rcp.feature.group,而原始教程要求您添加org.eclipse.rcp.feature.group。这就是缺少UI包的原因。

您可以轻松检查目标平台的实际内容:右键单击.tpd文件,选择“生成目标定义”,打开新生成的.target文件,等待Eclipse解析(观察进度视图),在解析之后,目标编辑器的“内容”页面显示该目标平台中可用的插件。