开发者

How to set up Eclipse PDE/Build with Indigo?

In my project I use PDE/Build to build my RCP application on a remote server in Hudson. The current version is a package based on Eclipse Galileo and it works fine both as a builder application and as a target platform.

Now I want to upgrade it to Indigo and I need some help here.

First, the old method of unpacking number of zips to form a target platform does not work. (I used Platform Runtime Binary, Delta pack, PDE Runtime Binary and JDT Runtime Binary - a set that I came up with that can be used both as a builder and as a target platform).

Ok, there is new target definition for that. How would I configure it so that it corresponds to my Galileo set up? (And of course I wouldn't mind if it was simpler/cleaner).

I tried the following:

  1. Added Eclipse RCP, Eclipse RCP Plug-in Developer Resources (for source), PDE/API Tools Environment from download.eclipse.org/eclipse/updates/3.7
  2. Added Eclipse Java Development from download.eclipse.org/releases/indigo
  3. Downloaded delta pack manually from download.eclipse.org/eclipse/downloads/drops/R-3.7-201106131736/download.php?dropFile=eclipse-3.7-delta-pack.zip, unpacked it and added the resulting directory (as Directory) to target definition. By the way, is there an update site for Indigo delta pack?
  4. Added a couple of third party plug-ins from Eclipse Orbit p2 site: download.eclipse.org/tools/orbit/downloads/drops/R20110523182458/repository

I then used the definition's 'Set as Target Platform' - and my project builds fine in my workspace - that's nice! Then I exported the platform to . Now, if I try to execute my build like this:

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>

or even

java -jar <target-platform>\开发者_如何学编程plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar

I get the following error:

An error has occurred. See the log file \configuration\1316517334675.log

The log contains the following:

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

!ENTRY org.eclipse.osgi 4 0 2011-09-20 15:15:35.175 !MESSAGE Application error !STACK 1 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini). at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)


Ended up with Maven based build against "Eclipse for RCP and RAP Developers" plus delta pack plus SWTBot. Both were deployed to my Maven repository and are unpacked during the build (if required). Therefore, I no longer care about the size of the target platform.

<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>

I then call ant build from Maven like this:

        <!-- 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>

I am happy with the set up now.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜