In other posts I already outlined that our effort beside creating new features is to make the e(fx)clipse runtime a better citizen of the OSGi community / ecosystem.
Starting with 1.2.0 we are not only providing a p2 repository – for people using PDE and Tycho – but also an R5 bundle repository you can use with bnd and bnd-tools (if you are an eclipse user).
Publishing our runtime as an R5 bundle repository in theory would allow you to use other IDEs as well to make use of our runtime – I say in theory because if not mistaken IntelliJ IDEA nor Netbeans yet support bnd directly.
I tried to get something working with IntelliJ IDEA, gradle and bnd but failed miserably which might be because I’m a newbie at gradle and IntelliJ IDEA – so if someone can give me a lending hand I’m happy to document the steps at our wiki and even add project setup support to our project wizards in future versions so that you are able to generate multi IDE projects.
So if a Netbeans or IntelliJ IDEA user is reading this I would really appreciate your input because I want our runtime used as much as possible without you leaving and forcing you into a specific IDE is not the way to go.
You can take a look at: https://github.com/akhikhl/wuff – it’s a gradle-based alternative for equinox/osgi applications. I’ve been using it on our e(fx)clipse project as a build tool, completely omitting the standard eclipse build system. It’s a little rough on the edges for e(fx)clipse, but works really great (you can use non-bundle dependencies too! they’ll be automatically bundled). The whole development is done in Intelli J Idea.
You can check out some of my samples at github: https://github.com/mcmil/wuff-efxclipse-samples and my intelli j plugin that eases the development process https://github.com/mcmil/wuff-intellij-plugin (you do not need to run gradle build everytime you want to change a single class).
Cool – where do you retrieve the runtime dependencies from a p2 repo? Does it help you that we now publish R5 meta data as well?
Currently wuff can work with a zipped p2 repository. Normally we have a e(fx)clipse site assembly on our server and use it for builds. My samples are using the nightly e(fx)clipse builds, as you can see here: https://github.com/mcmil/wuff-efxclipse-samples/blob/master/gradle/efxclipse-wuff-setup.gradle. Wuff just gets the bundles from the zip file, and installs them in a local maven repo. In that way, you can use the dependencies just like normal non-osgi ones (from nexus or maven central).
There is work in progress on full P2 support https://github.com/akhikhl/wuff/issues/9. Hmm I would have to think about the incorporation of the R5 into wuff – maybe it could make the process easier than getting the zip file from our own server.
I don’t know if it will be any help for you, but my Intelli J Plugin is basically starting equinox from scratch – it only uses the config.ini generated by gradle to choose appropriate bundles. I also had some ideas with using the devmode from Equinox so that you can load your own bundles from directories – without the need to create jar files while developing.
I’ll try to write up a tutorial how to get started with IntelliJ – I’ve created https://bugs.eclipse.org/bugs/show_bug.cgi?id=458787 – if we have the resources we’ll add multi IDE setup options
That would be great. Maybe It would be possible to add some kind of defaults to Wuff, so that at least the default bundles would be added out-of-the box (currently for e(fx)clipse I am enumerating all of them). I’ll try to create a short tutorial describing my flow. The approach definitely could be better (using product files, not generating the manifestes etc.) but could serve as a starting point.