I've got an RCP application built for several platforms. The target with delta pack is set OK, Product Export Wizard works OK, PDE ant build works OK. But the Update Site project creates the updates only for the single platform - the one I use for development actually (win32). I expect the update site to include all the dependencies from all platforms required by the listed features.. Any ideas what could go wrong and where to look?
you should take a look at tycho.
it is a mavne plugin that can generates headless product and update-sites
tycho is a eclipse project by now
Related
Currently I am in the process of moving one of our RCP applications from an older version of Eclipse to the current version 2019-03.
Our application is feature based an makes use of the Birt report generator.
When trying to lauch the application via its product-file lots of unresolved plugin requirements appear, as the combination of RCP and Birt now seems to depend on different versions of org.apache.batik.* (1.7.0 and 1.8.0).
I can get the app running by manually enabling the different versions via Run -> Run Configurations -> Plugins. But of course this does not help when trying to export the RCP through the Eclipse product export wizard. The exported app is missing various plugins.
So I tried to manually edit the manifest.mf of the plugin that is dependent on birt:
Require-Bundle:
org.apache.batik.css;bundle-version="1.7.0",
org.apache.batik.css;bundle-version="1.8.0",
...
But this does not seem to have any effect on the plugins beeing exported.
The tip to switch back to a plugin-based project (How best to maintain an Eclipse RCP plugin target? 1 ) does not seem to work either.
So does anybody know how to get Eclipse to export all required versions of the org.apache.batik plugins?
Thanks a lot in advance!
Tom
When you develop OSGi bundles using eclipse, there are many denpendent bundles to be imported and opened. When there're many bundles, setting up projects is time-comsuming and difficult, especially to newbies .
I've tried the Tycho plugin and m2e; it seems that they are not for this goal.
You can use Eclipse Target Platform concept.
Moreover, with some luck and persistence, you can use remote P2 site as a Target Platform definition in Eclipse. Since you can export Target Platform definition as a file, that means the whole setup for developers will be importing project with that file and selecting this target platform in Eclipse preferences. The Eclipse will download the whole bunch of dependencies itself. For more details see the blog post here.
Also, since you can use that P2 site as a repository for Tycho builds, that allows you to make Tycho use the same set of dependencies as you use in Eclipse making the build more stable. You can host P2 site as a static web content or use repository, like Nexus (however, only commercial version supports P2 repositories, so I have not tried that myself).
I have implemented a graph editor with Eclipse EMF and GMF frameworks. After completing my project, I realized that this plugin shows dependencies (not explicitly added by me) on some OS-specific plugins.i.e:org.eclipse.ui.win32, org.eclipse.swt.win32.win32.x86. And whenever I have tried to bypass this dependency at my update site something went wrong with the installation process of the plugin.
As such it is impossible to run my plugin in *nix environment or even win64 machines.This seems a very heavy constraint dependency to me. Am I doing something in a wrong way? Or is there no other way of building Eclipse plugins which are cross-platform other than building the project from scratch at each different OSs?
We created a similar style of plug-in in my project. Under "Plug-in Dependencies" in Package Explorer I can see org.eclipse.swt.win32 listed, but it is not listed in required plug-ins in plugin.xml.
We also successfully created an update site which works for Mac users without issue.
So, yes it is possible to have a cross-platform plug-in.
I would suggest you first try to to use "Export..." -> "Deployable plug-ins and fragments" to create a bunch of jar files for your plug-in. See if these can be successfully installed by copying into the drop-ins folder of a fresh eclipse installation. Do this first on a Win32 install, then try on another platform. Once you have that working, use the new Eclipse installation to create the Update site.
I have an RCP application based on plugins because I started this app from a simple Mail example.
I am now wondering what is the difference between an RCP application based on features compare to one based on plugins ?
For information, my RCP will maybe require some advanced features such as headless build, or self update. May be this can impact on the choice of using plugins or features as basis?
Since features are just a collection of plugins (aka, a "packaging" process), you should be able to do in a PDE headless build what you can do with the PDE GUI.
The PDE build page does mention:
Building plug-ins, fragments or features consists of the 3 stages: fetch, generate scripts and build that are described bellow.
You could have some issue for modified plugin, but building features or a final product should work.
Very useful tutorial from ibm for memory leaks in rcp:
http://www.ibm.com/developerworks/library/j-rcp2/index.html
We have an Eclipse RCP product, which means it depends on a number of Eclipse plugins (for the UI etc). We have set up a reference Eclipse ("target") to supply the latter.
Our product also depends on a number of third party plugins. Is there a standard location for these to be put?
We have a few of our third-party plugins in the /plugins of the target Eclipse, but this seems wrong to me. The third party plugins change more frequently than, or at least in a different timeframe to, our reference Eclipse.
I tried putting some third party plugins in a separate project in the workspace (under version control), but the PDE headless build did not seem to find them - even though I used the pluginPath property in the headless build.properties.
This is Eclipse 3.4.2. I am aware than the handling of target platforms has changed somewhat in 3.5.
Most of the comments I've seen see on the web about this seem to assume that you're writing a plugin to be added to a standard Eclipse installation. We're not, it's a completely separate product.
For my RCP applications I created a customized target platform directory for it to use (e.g. rcpapptarget). Under that directory I unzip the following packages:
eclipse-RCP-SDK-3.4.2-win32.zip
eclipse-3.4.2-delta-pack.zip
Then I add what ever other eclipse or third party plug-ins that my application will need. For example:
the latest GEF all .zip file
jay libs EclipseCallBasic_1.1.0 plug-in
derby distributed plug-in
additional eclipse plug-ins needed for help support, cheatsheets, updates etc.
I then setup a workspace for developing that RCP application and point the workspace's "Target Platform" to use that customized target platform directory. I do all my development using that target platform and my headless builds use it too.
To set the target platform choose the Window | Preferences command and then select Plug-in Development | Target Platform from the preference tree. Set the "Location" to point to the directory you created.
There isn't a standard that I know of for where 3rd part plugins should go. You can define an external extension location and store your party plugins/features there. This also allows you to reuse the plugins in multiple Eclipse installs if you wish.
You add an Extension location by going to
Ganymede onwards: Help->Software Updates->Available Software->Add Site->Local
Older versions: Help->Software Updates->Manage Configuration->Add Extension Location
For Ganymede onwards, the extension locations work a bit differently (IIRC the plugins are copied to the standard Eclipse install, which kind of defeats the point),there is however a new concept called dropins that you might find useful.