I want to create a bundled Eclipse update site for a single install of multiple plugins using the Eclipse Update Manager.
Our developers use the following common plugins for development, all of which I'd like bundled:
EGit - Git Team Provider
<url><update label="Eclipse EGit Update Site" url="http://download.eclipse.org/egit/updates"/></url>
Maven SCM Plugin
<url><update label="Maven Integration Extras" url="http://m2eclipse.sonatype.org/sites/m2e-extras/"/></url>
Maven SCM Handler for Subversive
<url><update label="objectledge.org m2e connectors" url="http://objectledge.github.com/maven-extensions/connectors/updates/"/></url>
Maven Integration for Eclipse
http://download.eclipse.org/technology/m2e/releases/1.0/1.0.200.20111228-1245<url>
Subversive -SVN team Leader
<update url="http://download.eclipse.org/technology/subversive/1.0/update-site/" label="Subversive update site 1.0.x"/>
<discovery url="http://download.eclipse.org/technology/subversive/1.0/update-site/" label="Subversive update site 1.0.x"/></url>
Subversive SVN Connectors
<url><update label="Subversive connectors update site 2.3.x" url="http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site/"/>
SVN Kit 1.3.7
<discovery label="Subversive connectors update site 2.3.x" url="http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site/"/>
</url>
Alternative 1: Composite repositories
With a composite repository you have basically a "super" update site, pointing to all the other update sites. You only need to take the 2 files from the Eclipse help and add all your update site locations as child location at the bottom.
Drawback: When you go to this update site, you can install all the plugins from all the sites, not only the ones you wanted.
Alternative 2: Update site mirroring
With the deprecated update command line manager application in Eclipse you can mirror single features from remote update sites to a local update site. I've not yet found that ability in the new P2 director application.
Benefit: That way your developers really only get the features you want.
Drawback: You need to do some more scripting.
Alternative 3: Manually import the listed features in one step (click "Install/Update" link afterwards)
If you have installed those features on one machine, you can use File -> Export -> Installation -> From existing installation to create a small text file containing those features and their update sites. Your other developers can import those using File -> Import -> Installation -> Install software items from file.
Benefit: No scripting, no update site hosting necessary. You can manage that export file in a version control system easily.
Drawback: Not started from update manager UI (but uses the same underlying P2 techniques).
Related
I am new to eclipse. Where can I find the org.eclipse.jdt.core version (e.g., [3.10.0,4.0.0) bundled with each official eclipse release. it would be tedious to find out by installing each eclipse version
I don't know of a versions list. You can download just the 'JDT Runtime Binary' for the various releases from the Eclipse Projects Archives. This is about 27Mb per release. This is just a zip file, you don't need to install it, just examine the contents.
I would recommend a tool like p2-browser. It will allow you to examine the contents of Eclipse P2 Update sites by just downloading the meta data.
Using p2browser
Once you have started p2browser (see below), you should have a screen like this:
Add 1 or more p2 sites to consider and allow the tool to download the metadata.
Press Add
Put the p2 site (e.g. for Mars: http://download.eclipse.org/releases/mars)
Press OK and wait for download
Repeat until you have all the versions you are interested in.
You should now have your added p2 sites listed in the tree viewer:
Now you can add your plug-in or feature you are interested in, e.g. in your case org.eclipse.jdt.core in the filter box:
Another example of what you can filter on, e.g. org.eclipse.jdt.feature.group for the JDT Feature
Download/Install/Build
Java Web Start
To use the p2 browser you may like to simply use Java Web Start, Run:
javaws http://ifedorenko.github.com/p2-browser/javaws/com.ifedorenko.p2browser.jnlp
Or click this link, as docs show, results for using java web start may vary because of tightening security considerations of running arbitrary java downloaded from the web.
Build and Run with Maven
You can build it with maven, as per the docs. These are simplified instructions:
git clone git#github.com:ifedorenko/p2-browser.git
cd p2-browser/
mvn clean package
cd com.ifedorenko.p2browser.rcp/target/products/com.ifedorenko.p2browser.rcp
Linux x64: linux/gtk/x86_64, other platforms, choose the correct directory.
./p2browser
I have used eclipse Features And Bundles Publisher to create a p2 metadata folder. But failed add the same folder as local site as eclipse keep on complaining Unable to find the site.
I could find content.xml and artifacts.xml but site.xml NOT generated through publisher command. I doubt if I have to create a site.xml manually.
FYI I am using eclipse KeplerSR2.
The p2 publisher should create a structure like this. Depending on pack attributed the content and artifact repository files [content and artifact] might be jared.
<repo-root-dir>
features
featureA.jar
...
plugins
pluginA.jar
...
content[.xml|.jar]
artifacts[.xml|.jar]
You won't get and won't require an update site file.
Make sure to clean the location you use from the Eclipse -> Preferences -> Available Softwares Sites. Eclipse is caching the repo metadata.
Yes you must have site.xml for update site from update_site
To create an update site you must develop a site.xml file and build the site. PDE provides an editor and project for creating sites. A site will contain one or more features organized into categories.
See how to create site.xml
I'd like to retrieve the content of an update site. I tried the general way ("Help -> Install New Software"), but unfortunately I can't download the content because of conflicting dependencies. Is it possible to download the content of that repository manually, so that I can work with the plugins myself?
You can create a local copy of a remote p2 repository with the p2 mirroring tool. You can call that tool
as Eclipse application,
as Ant task, or
as Maven goal.
To create a local mirror of an Eclipse update site you may want to try the B3 Aggregator, https://www.eclipse.org/b3/.
It comes with an Eclipse editor for specifying the features/bundles to mirror from which update sites.
I am developing an Eclipse plug-in that requires a third-party plug-in such as the AJDT (AspectJ Development Tools) plug-in.
When a user wants to install my plug-in from the update site and does not have AJDT installed or enabled in his list of available update sites the installation will fail.
I created a file associateSites.xml next to the site.xml and included the reference in site.xml: tag:
<site
associateSitesURL="associateSites.xml">
The content of associateSites.xml looks like this:
<associateSites>
<associateSite url="..."/>
</associateSites>
This does not seem to have the wanted effect. Is there any other way to do so?
Using associateSitesURL seems to be deprecated.
This can help:
Include an external update site in my update site in Eclipse
together with
Feature Export Wizard
You have to add the
<repository-reference location=...>
tag in the category.xml and export the features as described in Feature Export Wizard, checking the option "Categorize repository".
Try making the associateSitesURL an absolute URL (eg, http://www.yourdomain.com/updates/associateSites.xml)
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?
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.
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.
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)
Eclipse Node.js IDE is assembled this way.
This question is related to
Eclipse IDE: install set of plugins
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).
Just zip up the C:\eclipse\plugins directory and distribute.
Just ensure that developers start Eclipse with the "-clean" option to ensure that any changes are incorporated.