[galileo] Manage Plug-ins (bundles) of Eclipse Target Platform

Part 6 of my Galileo Reviews around Target Platforms. An Overview of this blog series can be found here.

We finished part 5 with a Target Definition containing Plug-ins (bundles) from different kinds of locations:

target definition w location from directory

Fine-tuning the Selection of Plug-ins

At the moment all Plug-ins from all added Locations are selected. You can display the Content together with your Locations on the first page checking “Show Plug-in content” …

show plugin content

… or you switch to the “Content” Tab where you have some more control.

Target Content Group By

You can check if Source Bundles should be shown or not and also group the content:

  • Group by None (plain view, all Plug-ins sorted by ID)
  • Group by Filepath
  • Group by Location

And as usual there’s a Search field to make it easy to find Plug-ins:

Target Content Search

But the most important is the little ckeckbox which allows you to

  • Select Plug-ins
  • Deselect Plug-ins

Now its easy for you to fine-tune your Plug-ins and save the selection in the Target Definition file.

There’s also the option to “Add Required” – you can test if after Selecting / Deselecting all Required Bundles are selected in your Target Definition.

Attention: this option perhaps Selects Plug-ins you Deselected before without giving you an information which Plug-ins are re- selected to fullfill the requirements !

Defining the Environment

Beside the “Content” tab there’s also an “Environment” tab:

Target Definition Environment Tab

If your Target Environment is the same as your IDE (running Host platform) is running from, then you can leave this empty.

But its usual that you have some different Environments where your product should run – even if you only develop for one OS.

per ex. under OSX you should test and run under JVM 5 cocoa 32-bit, JVM 5 cocoa 64-bit, JVM 6 cocoa 64-bit, JVM 5 carbon.

Its a good idea at first to start with the same Environment then your IDE is running and later duplicate the Target Definition file for different Environments.

Or another strategy could be to put all (OS – specific fragments etc) into one Target Platform Definition and have different Launch configurations using different Environments / Plug-ins / Fragments. But thats a story for another blog and outside of the “Galileo Review Scope”.

The only thing you should have in mind now:

  • if the Environment is empty – the Environment from your running Host is used
  • if you enter values for the Environment this will be used as initial values if you create new Launch Configurations
  • In your Launch Configurations you can overwrite the values from your Target definition

Lets go back to the Preferences Page “Preferences -> Plug-in Development -> Target Platform

Updating Plug-ins (bundles) of your Target Platform

The Preference Page shows the active and all available Target Platforms:

active and available target platforms

As you already learned you can add (and move) or remove Target Definitions from here.

Edit… is nearly the same then from the Target Definition Editor described above.

Hint: I had sometimes the problem, that my selections of Plug-ins were destroyed, esp. if using the search-field on the Contents page, but it wasn’t easy reproduceable. So its a good idea to have a backup or put the Target definitions under CVS – then its easy to compare and restore.

To see if there are newer versions of your Plug-ins you can start a “Reload…” – your Sources will be contacted and newer Plug-ins fetched. Double-clicking to Edit the Target Definition does the same job.

But this works only, if its the same version and only the Qualifier changed. This means its great and easy to use if you always need the newest I-Build of the same Version.

If you need a new Version (Update), then you should duplicate the Target Definition (do this in your Workspace project), change the title and name to reflect the new version and select the Plug-ins with the new Version or choose another Software Site or Directory. Then its also easy to test per ex. 1.0.0.M1 and 1.0.0.M2 by switching the active Target Platform from Preferences.

The next part of my blog series will explain you all the new cool views of Eclipse 3.5 helping you to get more informations about the Plug-ins from IDE and Target Platform.

6 responses

  1. Hi Ekke,

    Brilliant and useful blogs indeed but I’m confused. I think that, as a tech writer, I’m missing some context here. How on earth do I get the selected locations and plugins to actually copy to the target?

    I’ve selected exactly what I want.. an output Eclipse help from the DITA Open Toolkit and the org.eclipse.help feature but the target directory remains staunchly and residedly empty.

    Thanks, Richard

    • Richard,
      sorry, I didn’t really understand your question.
      * Locations for Software Sites: it depends on your project needs which software sites you add to your target platform
      * Locations from Directories: this is useful if you have to include software where no Software Site exists and you download plug-ins to a directory and then add this directory to the Target Platform Definition

  2. Hi Ekke,

    thanks for sharing your knowledge 🙂
    There’s one thing that I can’t get to work:

    I have an update site running on a local jetty server providing a simple feature with one plug-in. This update site is part of a target platform in a second workspace. Now I want to publish a new version of the feature/plug-in by chaning the qualifier (the actual “version” remains the same: 1.0.0, just as you described in your blog).

    However neither “reloading” the target platform (btw. I am using Indigo) nor the “update” button on the “Target Content” dialog works. Eclipse doesn’t send any request to the update site at all! Only changing the update-site URL (just adding some chars to the querystring for instance) works.

    Thanks and best regards

      • Yes, I always check the site.xml in the browser first. I don’t use p2, just a POUS (plain old update site 😉
        I also serve the site.xml through a servlet, so I can set additional http response headers in order to disable http caching on the client side.
        There is also a filter that logs all incoming requests, so I can check whether Eclipse sends a request at all when I click “Reload” or “Update”.
        This way I found out that “Reload” & “Update” don’t even ask the server whether there is something new… Servlet and filter are working fine, since changing the Update-Site URL works. Eclipse seems to cache the downloaded stuff in its “session”, because I believe it also helps to restart Eclipse (this I have to verify on next Monday, but I know this from other attempts with public update sites).
        I am pretty sure that I’m just missing a really stupid thing and I can imaging that I will kick myself into somewhere when I’ll find out (if you know what I mean 😉

        Thanks for your quick reply und schöne Grüße aus der Rhein-Neckar Region!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: