Eclipse RCP: for multiple platforms

I'm developing an Eclipse RCP application. The application should run on Windows and Linux.

There are several plugins in this application that contain native artifacts. To contain these artifacts in a binary build (jar), one should specify them in <strong></strong> file. Currently I include both Linux and Windows native artifacts in <strong></strong> and then in runtime I choose which one to load. However, I don't like this approach as it causes unnecessary files to present in both Linux and Windows builds.

Is there a way to specify target platform in <strong></strong>? So that for Linux build it would include Linux artifacts and for Windows build it would include Windows artifacts? Alternatively, is there a way to maintain two copies of <strong></strong> - one for Linux build and second for Windows build?


The usual way to do this is to have separate plugins (or plugin fragments) for each platform with a platform filter which restricts when the plugin is available:

For example, in the MANIFEST.MF

Eclipse-PlatformFilter: (& ( (osgi.os=macosx) (osgi.arch=x86_64) )

restricts the plugin to only Mac OS X 64 bit, Cocoa.

This is what SWT does. There is a base org.eclipse.swt plugin which doesn't contain any code and then multiple plugin fragments extending that plugin (such as org.eclipse.swt.cocoa.macosx.x86_64). Each fragment contains the SWT code for a platform, all implementing the same classes.

Eclipse only loads the plugin for the current platform so you don't have to do any work choosing what to use.

人吐槽 人点赞



用户名: 密码:
验证码: 匿名发表


查看评论:Eclipse RCP: for multiple platforms