Maintaining a common set of Eclipse preferences - eclipse

Whenever I switch workspaces/Eclipse installs I need to copy/redo the preferences:
compiler settings;
font sizes/families;
code formatter;
java code templates;
editor templates;
code clean-ups;
I would like to maintain these settings in an unitary way, preferrably under source control. How can I do that?
I know about 'copy settings' when creating a new workspace, but it does not keep updated copies.

You could of course export/import those settings.
The other approach is to enable project specific settings for some settings.
We have a very small Git repository with those kind of files:
.settings/org.eclipse.jdt.core.prefs (compiler problem settings and formatter rules)
.settings/org.eclipse.jdt.ui.pref (cleanup rules, common code templates)
The common settings are just copied/merged in each projects .settings directory, ensuring common rules amongst all projects, whatever the workspace.

You could also try Workspace Mechanic. It works perfect for this.
http://code.google.com/a/eclipselabs.org/p/workspacemechanic/

Eclipse now ships with a tool called Oomph Setup. This tool can be used to record the preference changes that happen in your workspace, synchronize those preferences across multiple machines using an online service, and apply the preferences to both new and existing workspaces.
"Oomph" is actually a broader set of tools and low-level frameworks that are used throughout the Eclipse installation process, and it provides for very powerful automation possibilities, so the documentation is sometimes hard to follow for an end user who's just interested in simple preference synchronization. Here are a collection of links about Oomph Setup that I found helpful:
Oomph: A Matter of Preference -- Blog post providing overview of preference tool
Oomph Setup Documentation -- Official documentation
Automating Project-specific Eclipse Setups with Oomph -- Walks through how to set up Eclipse to have default settings for new workspaces and automatically update the settings for existing workspaces

You now have a good example of a separate project maintaining Eclipse preferences, as plugin.
See the saneclipse project from Lars Vogel.
You also have the associated vogellacompany/com.vogella.saneclipse repo, which will tweak and fine-tune the settings of:
com.vogella.saneclipse.preferences/.settings/org.eclipse.jdt.core.prefs
com.vogella.saneclipse.preferences/.settings/org.eclipse.core.runtime.prefs
com.vogella.saneclipse.preferences/.settings/org.eclipse.core.resources.prefs
com.vogella.saneclipse.templates/.settings/org.eclipse.jdt.core.prefs
com.vogella.saneclipse.fileextensions/.settings/org.eclipse.jdt.core.prefs
com.vogella.saneclipse.fileextensions/.settings/org.eclipse.pde.core.prefs

Check out Pulse Freelance Edition. It has the ability to sync workspaces (commercial).

Related

Share Eclipse Settings With Team

We have a very common use case: we want to standardize all our Eclipse settings like formatter, warnings, save actions etc.
This question got the answer to just use project settings for that, but here's why that won't work for us:
We have way too many projects. We have about 500 Maven / Tycho reactors (many with branches) which in turn contain of usually 3-5 Java projects. Copying project settings for all of these is tedious, error prone and not update-friendly.
So we decided to import workspace setting for each workspace, but that's not optimal either. E.g. I already have about 100 workspaces, so it's almost as tedious and error prone as the project settings.
Let's not even talk about the fact that most of us have more then one Eclipse installation.
Right now I'm thinking about creating a custom plug-in / fragment for Eclipse, which programmatically adds our company's formatter and other settings to the workspace. It would only need to be installed once, and could be updated via the built-in update mechanism.
But I really can't believe nobody has a similiar problem. So I wondering, if there is a build-in way to share Eclipse settings with a big team with many projects?
Eclipse Oomph is licensed under EPL 1.0 - I can't see why that shouldn't be allowed for companies.
Wrt https://stackoverflow.com/a/37799711/10235188 also Yatta Profiles for Eclipse is mentioned to share Eclipse preferences like Code Formatter and other settings.

Distributing eclipse with UI customizations

I would like to use Eclipse in an intro programming class. Is there some way I can make some kind of preferences file or some such that I can distribute with it that would set defaults for:
which buttons are in the toolbar
which menus are enabled in the application
which context-menus are enabled
what kinds of completions are available
I'd like it to start with only completing words from the current document
that is no Java API completions or code generation or whatever
This can be done using Eclipse Preferences File. All you need to do is import preferences into your workspace.
You can also export the workspace folder itself & publish Eclipse together with a default workspace folder, which will contain all the preferences.
Then create a shortcut to start eclipse with -data <path to your workspace> parameter
I'd try the following:
Install Eclipse
Put the configuration files and workspace under version control and commit.
Configure Eclipse as required.
Check all the changes in the version control to understand what configuration files are relevant to my changes.
Continue as Zilvinas is suggesting.
Look into Eclipse Oomph. It essentially automates all the tasks that you need to do to set up a fresh dev environment.
Also of interest are Yatta profiles which do a similar thing based off Oomph.
They're pretty easy to set up and publish. Get your local eclipse working, record to a profile, publish the profile, get your students to consume said profile. We've used these in a professional environment to more easily on-board new devs!

Centralized formatting settings with oomph

I got a task about replacing Workspace Mechanic in Eclipse since there are no commits since 2014 and sometimes it doesn't work without reason.
I could create and configure a installation.setup file successfully on my local machine with some code clean-up formatting and save actions preferences which are loaded each start automatically. :)
The last step is to centralize the setup-file on a network drive.
Workspace mechanics enables to configue a directory with the settingfiles inside.
Oomph may not support the way I thougt. There is a way to synchronize to Eclipse.org but we want to keep the information inside the company due to policy reason.
Is there any way to store a central (Oomph) setup-file which synchronizes to each Eclipse client at start up?
You can use the Eclipse plugin yatta. It "manages your Eclipse setups – for yourself, your team, or within the community.". Of course, you can simply share the Preferences - other options it provides is share repos and projects.
https://www.yatta.de/profiles/help
With yatta you will create an Eclipse Installer, that can be installed on different clients. The clients will receive Updates of the 'master-settings' and there is the option to fork as well. Settings will be not be saved in local network but in the clould. From scratch, your profile will be private, you can share it with single persons, a group (*#yourcompany.com) or you can share it to public as well.
While Yatta is a handy to use plugin, it is based on Oomph, which is the complex way (you have several 'ontop' configurations for product, project, installation & workspace). In fact, both can do what you want.

How to set system wide settings in eclipse

For multi-users desktops, I need to set-up some preferences in Eclipse.
As an example, I need to activate those 2 preferences by default :
General>Workspace>Refresh using native hooks or polling
General>Workspace>Refresh on access
I've found that by checking them and closing eclipse, it is saved to <workspace>/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs which contains :
eclipse.preferences.version=1
refresh.enabled=true
refresh.lightweight.enabled=true
version=1
What would be the way to set it system wide? All users, all workspaces.
Thanks,
Use Google Workspace Mechanic to share these settings. Or have your IDE and workspaces managed by Yoxos (which does a lot of other things besides only preferences).
In pure Eclipse, there is no way to do this by configuration only.

How can I export Eclipse compiler settings to a file?

In Eclipse I have exported code formatting, cleanup, import orders etc to files and checked them into svn.
This is useful for my team so that they can all use the same setup.
However, I can't find a way to do the same for Compiler options. There are quite a few useful settings that aren't switched on by default and its error prone for everyone to change them manually.
I know that I can use FindBugs (and we do through CI) but the Eclipse compiler options are better integrated and faster.
The best way to share all of those settings is to use Project-specific settings. Open the Project properties and select the various sections that you want to configure (for example, Java Compiler, then select the option Enable project specific settings.
Any settings you configure this way are stored in the project in a folder named .settings. Check that folder in to source control along with the .classpath and .project files, and whenever the project is checked out Eclipse will automatically apply the settings. Workspace settings are overridden by project-specific settings, so using this technique it doesn't matter how other workspaces or users have their settings configured.
The answer of #E-Riz is perfectly correct. If you find that you need to synchronize more than the listed settings for your team members in the future, then you should also have a look at Googles workspace mechanic, which allows to automatically apply any set of preferences to a workspace and to check during each start if the local preferences are still valid for the shared setup.