Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating an Eclipse "Distribution"?

In the context of creating a custom Eclipse distribution for a development team.

How would I go about building a custom Eclipse distribution containing a specific set of plugins? Would it be difficult to also add a kind of update site to put specific versions of the plug-ins from which the customized eclipse would update?

like image 740
Loki Avatar asked Dec 08 '08 23:12

Loki


4 Answers

I realize this is an old post, but it keeps coming up on searches I do and I’d like to put in some more details given all the changes and maturity that has occurred when it comes to delivering Eclipse plug-ins... So, for those who end up on this page, hopefully the following will help you out!

To summarize my personal findings:

  • There have been many improvements in this space both in open source and commercially
  • The complexities of distribution are often greater than expected
  • Build on the backs of others, it is worth it!

And while I work for a company offering a commercial solution (http://genuitec.com/sdc), I’ve tried to answer below with the practicalities of Eclipse delivery using free solutions.

So, without further adieu...

The absolute minimal solution is to download an Eclipse package from Eclipse.org, add the plugins you want, set the -clean parameter in the eclipse.ini, zip up the directory and hand it around your team. As long as you added the features from your internal update site (and the URL remains constant), Eclipse will be able to update from it.

This will work the first time, and since it's easy, it's what most people start out doing. But it ignores the lifecycle of your tool stack. Here are some pain points I've encountered while helping customers with their Eclipse tooling:

  • Eclipse Packages: You have to be an Eclipse/p2 guru to set up and maintain Eclipse packages. The EPP tools allow you to build your own packages, but you need a lot of domain knowledge around Eclipse packages, p2, and the EPP tooling. A place to start is http://wiki.eclipse.org/EPP/How_to_build_a_package_locally

  • Plugins: Finding plugins involves lots of hunting for update sites and then you can never be sure you got the exact right binaries. Sometimes update sites go down, or you lose support for your Eclipse version when the plugin developers release a new update site. One suggestion is to make local copies of update sites to mitigate your exposure to such problems.

  • Eclipse Updates: If you want your team to switch Eclipse versions, you'll end up just rebuilding your tool stack on the next version and having everybody reinstall. There's no way around this when just shipping a zip.

  • Plugin Updates: Eclipse is designed to keep installing the new version of plugins, but in large production teams that can be counterproductive. Local mirrors of update sites can help with this as long as your team doesn't go out and add their own update sites.

  • Security: Do you need to prevent your team from installing some software? What about requiring signed tools? You'll have to write plugins to limit the features of your package and you may have to sign plugins yourself. The PDE build has some support for signing.

  • Long Term Maintenance: Rebuilding a tool stack in a few years (or sometimes a few months) can be close to impossible as support for different versions of Eclipse and different plugin versions comes and goes dynamically in the Eclipse ecosystem. Save off copies of your Eclipse packages. Buy big hard drives. Mirror the update sites you use.

  • Workspace Setup: You can deploy an Eclipse to your team, but that's just the first step in the process. Automation for workspace setup, e.g. preferences, projects, Checkstyle or PMD configuration, goes a long way in reducing the amount of time your team spends getting ready to work. Additionally, these settings change often as you add projects creating continuous management hassles. When passing around a zip, I've seen teams also pass around a corresponding WIKI page or something similar. It's usually up to each developer to make sure they follow the steps.

  • Managing Multiple Packages: Maybe you have one package for your dev team and another for your QA team. And then your dev team grows and splits into two groups with slightly different tooling needs and now your QA team needs multiple packages too. And then you start shipping your own plugin on top of Eclipse so that's another package that you are managing. After a few years of this, you spend all your time building Eclipse packages and you became a Eclipse/P2/Update Site guru without even trying. Clearly, the solution here is to hire somebody to do this for you. :)

  • SMS Distribution: This works reasonably well with a zip file, but pushing out updates gets messy. Usually, people use SMS to drop down the first install, and then it's the developer's job to keep it up to date.

like image 166
Jed Anderson Avatar answered Nov 08 '22 19:11

Jed Anderson


Eclipse is not one of those applications that need to be "installed" since it can just be copied into a directory structure and have shortcuts set up for running it (a la the BIRT all-in-one distributions).

I would suggest installing it on one machine, getting all the plug-ins installed, then just zip up the directory and use that to distribute to other machines.

And running your own update site isn't that difficult, you just need a server into which you install only the versions of the plug-ins you need and ensure your distribution points to that server before making the zip file. There's nothing stopping your developers from connecting to another site as well.

like image 30
paxdiablo Avatar answered Nov 08 '22 19:11

paxdiablo


Answering to Lokki's original question, team leader can create team own "distro", as .p2f file, that contains plugins ID, update site and exact version to use.

Use (File -> Export -> Install -> Software Items to file) to prepare plugin list file (*.p2f),

File example

<?xml version='1.0' encoding='UTF-8'?>
<?p2f version='1.0.0'?>
<p2f version='1.0.0'>
  <ius size='5'>
    <iu id='org.chromium.sdk.feature.group' name='ChromeDevTools SDK' version='0.3.9.201302091448'>
      <repositories size='1'>
        <repository location='http://www.tomotaro1065.com/nodeclipse/updates/'/>
      </repositories>
    </iu>
    <iu id='org.chromium.debug.feature.group' name='Chromium JavaScript Remote Debugger' version='0.3.9.201302091448'>
      <repositories size='1'>
        <repository location='http://www.tomotaro1065.com/nodeclipse/updates/'/>
      </repositories>
    </iu>
    <iu id='com.eclipsesource.jshint.feature.feature.group' name='JSHint Eclipse Integration' version='0.9.6.20130319-2128'>
      <repositories size='1'>
        <repository location='http://github.eclipsesource.com/jshint-eclipse/updates/'/>
      </repositories>
    </iu>
    <iu id='markdown.editor.feature.feature.group' name='Markdown Editor' version='0.2.3'>
      <repositories size='1'>
        <repository location='http://winterwell.com/software/updatesite/'/>
      </repositories>
    </iu>
    <iu id='org.nodeclipse.feature.group' name='Nodeclipse' version='0.2.0.201302091448'>
      <repositories size='1'>
        <repository location='http://www.tomotaro1065.com/nodeclipse/updates/'/>
      </repositories>
    </iu>
  </ius>
</p2f>

then (File -> Import -> Install Software Item from file)

Import -> Install Software Item from file

Eclipse Node.js IDE is assembled this way.

This question is related to Eclipse IDE: install set of plugins

like image 3
Paul Verest Avatar answered Nov 08 '22 18:11

Paul Verest


I may interesting to anybody trying to assemble their own Eclipse distro to get acquainted with the Eclipse Packaging Project http://www.eclipse.org/epp/. To setup a private update site, Sonatype's Nexus Professional serves exactly that purpose (commercial license).

like image 1
javier.castanon Avatar answered Nov 08 '22 17:11

javier.castanon