3

在我的项目中,我使用 PDE/Build 在 Hudson 的远程服务器上构建我的 RCP 应用程序。当前版本是一个基于 Eclipse Galileo 的包,它既可以作为构建器应用程序,也可以作为目标平台。

现在我想将它升级到 Indigo,我需要一些帮助。

首先,解压多个 zip 以形成目标平台的旧方法行不通。(我使用了 Platform Runtime Binary、Delta pack、PDE Runtime Binary 和 JDT Runtime Binary——我想出的一套既可以用作构建器,也可以用作目标平台)。

好的,有新的目标定义。 我将如何配置它以使其与我的 Galileo 设置相对应? (当然我不介意它是否更简单/更清洁)。

我尝试了以下方法:

  1. 从 download.eclipse.org/eclipse/updates/3.7 添加了 Eclipse RCP、Eclipse RCP 插件开发人员资源(用于源代码)、PDE/API 工具环境
  2. 从 download.eclipse.org/releases/indigo 添加了 Eclipse Java Development
  3. 从 download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/download.php?dropFile=eclipse-3.7-delta-pack.zip 手动下载增量包,解压并添加结果目录(作为目录)到目标定义。顺便问一下,是否有 Indigo delta pack 的更新站点?
  4. 从 Eclipse Orbit p2 站点添加了几个第三方插件:download.eclipse.org/tools/orbit/downloads/drops/R20110523182458/repository

然后我使用了定义的“设置为目标平台”——我的项目在我的工作区中构建得很好——很好!然后我将平台导出到 . 现在,如果我尝试像这样执行我的构建:

java -jar <target-platform>\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar -application org.eclipse.ant.core.antRunner -buildfile <target-platform>/plugins/org.eclipse.pde.build_3.7.0.v20110512-1320/scripts/productBuild/productBuild.xml -Dbuilder=<pdebuild-folder>

甚至

java -jar <target-platform>\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar

我收到以下错误:

发生了错误。查看日志文件\configuration\1316517334675.log

该日志包含以下内容:

!SESSION 2011-09-20 15:15:34.269 eclipse.buildId=unknown java.version=1.7.0 java.vendor=Oracle Corporation BootLoader 常量:OS=win32, ARCH=x86, WS=win32, NL=en_US

!ENTRY org.eclipse.osgi 4 0 2011-09-20 15:15:35.175 !MESSAGE 应用程序错误 !STACK 1 java.lang.IllegalStateException: 无法获取应用程序服务。确保 org.eclipse.core.runtime 包已解析并启动(请参阅 config.ini)。在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 在 org.eclipse.core .runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source ) 在 java.lang.reflect.Method.invoke(Unknown Source) 在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:

4

1 回答 1

1

结束了基于 Maven 的构建,针对“RCP 和 RAP 开发人员的 Eclipse”加上 delta 包和 SWTBot。两者都部署到我的 Maven 存储库并在构建过程中解包(如果需要)。因此,我不再关心目标平台的大小。

<build>

    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <!-- Deploy target platform if required -->
                <execution>
                    <id>unpack-target-platform</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>

                    <configuration>
                        <markersDirectory>${target.platform.dir}</markersDirectory>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.eclipse</groupId>
                                <artifactId>rcp-target-platform</artifactId>
                                <version>3.7.2-win32-x86_64</version>
                                <type>zip</type>
                                <outputDirectory>${target.platform.dir.sdk}</outputDirectory>
                            </artifactItem>

                            <artifactItem>
                                <groupId>org.eclipse</groupId>
                                <artifactId>rcp-target-platform-delta-pack</artifactId>
                                <version>3.7.2</version>
                                <type>zip</type>
                                <outputDirectory>${target.platform.dir.deltapack}</outputDirectory>
                            </artifactItem>

                            <artifactItem>
                                <groupId>org.eclipse</groupId>
                                <artifactId>swtbot.eclipse</artifactId>
                                <version>2.0.5.20111003_1754-3676ac8-dev-e36</version>
                                <type>zip</type>
                                <outputDirectory>${target.platform.dir.swtbot}</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>

            </executions>

        </plugin>
    </plugins>
</build>



<properties>
    <!-- Build system properties -->
    <target.platform.dir>/rcp-target-platform-3.7.2</target.platform.dir>

    <target.platform.dir.swtbot>${target.platform.dir}/swtbot</target.platform.dir.swtbot>
    <target.platform.dir.swtbot.plugins>${target.platform.dir.swtbot}/eclipse/plugins</target.platform.dir.swtbot.plugins>

    <target.platform.dir.sdk>${target.platform.dir}/sdk</target.platform.dir.sdk>
    <target.platform.dir.sdk.plugins>${target.platform.dir.sdk}/eclipse/plugins</target.platform.dir.sdk.plugins>

    <target.platform.dir.deltapack>${target.platform.dir}/deltapack</target.platform.dir.deltapack>
    <target.platform.dir.deltapack.plugins>${target.platform.dir.deltapack}/eclipse/plugins</target.platform.dir.deltapack.plugins>

    <pdebuild.launcherVersion>1.2.0.v20110502</pdebuild.launcherVersion>
    <pdebuild.plugin.version>3.7.0.v20111116-2009</pdebuild.plugin.version>

    <pdebuild.antDelegateBuildfile>${pdebuild.configDirectory}/pdebuild-ant-from-mvn.xml</pdebuild.antDelegateBuildfile>
    <pdebuild.configDirectory>${basedir}/pdebuild</pdebuild.configDirectory>

    <pdebuild.buildDirectory>${project.build.directory}/${pdebuild.directory}</pdebuild.buildDirectory>
    <pdebuild.directory>pde-build</pdebuild.directory>
</properties>

然后我像这样从 Maven 调用 ant build:

        <!-- Delegate execution to PDE/Build via ant -->
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <configuration>
                        <target>
                            <ant antfile="${pdebuild.antDelegateBuildfile}">
                                <property name="equinoxLauncherPluginVersion" value="${pdebuild.launcherVersion}" />
                                <property name="pdeBuildPluginVersion" value="${pdebuild.plugin.version}" />
                                <property name="projectsDirectory" value="${basedir}" />
                                <property name="baseLocation" value="${target.platform.dir}" />
                                <property name="buildDirectory" value="${pdebuild.buildDirectory}" />
                                <property name="builder" value="${pdebuild.configDirectory}" />
                                <property name="product" value="${gui.product}"/>
                                <property name="runPackager" value="${pdebuild.runPackager}"/>
                            </ant>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我对现在的设置很满意。

于 2012-09-12T18:45:14.940 回答