Q:

How do I sync development environments between multiple users?

Background
I graduated 6 months ago, and my collaborative work in college has all involved JavaSE, and using SVN between myself and other team members was a fairly straight forward process. There also wasn't a lot of interesting stuff going on with Eclipse because of the fact that we were just using JavaSE stuff.
Fast forward to now and I'm starting up a project with a friend. I want to learn Java EE, Servlets, JSPs, JSF, JPA, the whole nine yards. I feel like I'm actually pretty comfortable on that front. So I sat down a week ago and got Eclipse setup on my computer with Git for version control, and a Glassfish 3 server plugin, and MySQL running as a service. Everything's good to go and working nicely. My stack right now is Git/MySQL/Glassfish 3/Java 1.7.
I'd like to add Hibernate, Spring Beans, possibly Struts 2, and definitely JSF once we have learned enough basics about the other stuff like JSPs, EL, JSTL, servlets, etc.
Problem
Now the problem that I run into is I want to get my friend setup on the exact same development stack so that we don't run into any weird issues where he can't connect to the DB, but I can, or vice versa.
Questions
How do I manage all this configuration information in a way that's easy for him to import/replicate.
My goal state would be to have a single file that I could pass him (possibly a configuration file, or just a zip, I don't really care) that some other process can consume, and then out on the other end comes Eclipse fully deployed, servers up populated with data, and everything nicely connected together. Obviously he'd have to pull down the source from Git and then import that workspace, but besides doing that manual process, I'd like for him, and any future team mates we might get, to have a single, simple process to follow to create their own development environment. I'd also like to be able to extend the configuration for environment I have currently when we add stuff in the future.
Is there a tool that specifically addresses all of this? One that makes it easy to package up the various plugins, programs, etc that I think we'll need and redeploy them to another team member's computer. I'd like to make the process as seamless as possible, but I'm open for any suggestions, manual or not, on how I should go about doing this. What the best practices are on managing this sort of thing (I have to imagine this is a painfully common problem) and any tools that might be helpful, or that address this problem head on.
Thanks in advance! Also, I can provide more details or clarify in response to comments.

A:

There is a way to share update sites, or even compose your own that points to other remote update sites, that would allow someone else to take a base eclipse instances and the update site and install the same eclipse plugin stack that you use.  See Local update site with remote features for an example of how to compose update sites.  It can even be scripted:
bash$ eclipse/eclipse \
-application org.eclipse.equinox.p2.director \
-noSplash \
-repository \
http://download.eclipse.org/releases/juno,\
http://download.eclipse.org/tools/orbit/downloads/drops/R20110523182458/repository \
-installIUs \
org.apache.commons.jxpath/1.3.0.v200911051830,\
org.apache.batik.xml/1.6.0.v201011041432,\
org.dojotoolkit/1.6.1.v201105210659,\
org.eclipse.emf.sdk.feature.group,\
org.eclipse.xtext.sdk.feature.group

But as for setting up the servers and DB, and making sure they're interconnected.  Whether you can just unzip and deploy them will depend on each of their own configuration methods, no?

