Oh and with the eclipse change, I was able to finally use multiple threads to compile. Before, it always died because eclipse was interfering. Now I'm able to get the entire compile down to just about 3 minutes.
mvn -T 3 -o -P impatient,systemvm clean install -DskipTests=true --Alex > -----Original Message----- > From: Alex Huang [mailto:alex.hu...@citrix.com] > Sent: Wednesday, March 13, 2013 8:49 PM > To: cloudstack-dev@incubator.apache.org > Subject: RE: eclipse and maven working together... > > Oh and btw, I checked in a new profile called impatient. With it, I cut off a > whole minute (about 25% for me) off the build. Use it in place of developer. > Developer profile is still there. > > mvn -o -P impatient,systemvm clean install -DskipTests=true > > --Alex > > > -----Original Message----- > > From: Alex Huang [mailto:alex.hu...@citrix.com] > > Sent: Wednesday, March 13, 2013 8:33 PM > > To: cloudstack-dev@incubator.apache.org > > Subject: eclipse and maven working together... > > > > With the included checkins, I made some changes to help developers > > with better productivity. > > > > With maven not supporting incremental build, most people are building > > with mvn clean install. After doing that, you probably see eclipse > > start rebuilding the workspace and eclipse is slow when that happens. > > I thought that was strange and figured it was because maven and > > eclipse are sharing the same target directories. A quick search on > > that turns up that this is a common problem already described on m2e's faq > [1]. > > > > So with this commit, I did the following things. > > > > I changed the outputDirectory of the build to be based on a config variable. > > The default is the normal target directory. However with the eclipse > > profile, it gets set to target-eclipse. What this means is that > > > > - When compiling outside of eclipse, it uses target to contain the > > generated files. > > - When compiling inside eclipse, it depends on the active profile for > > the project. If it contains eclipse, then it uses target-eclipse. If > > it doesn't contain anything, then it uses target like before. > > > > Here comes the hard part, in order to make this work, you need to run > > a script that I checked in. Run it with bash. Works in Cygwin for me. > > > > Quite eclipse. > > > > From the top directory, run > > > > tools/eclipse/set-eclipse-profile.sh > > > > This will set all of the projects to have profile eclipse. From then > > on, your eclipse won't be recompiling the workspace every time you run > > mvn clean install in a terminal. It also avoids a race condition > > between mvn and eclipse in building the class files. > > > > --Alex > > > > [1] > > > http://wiki.eclipse.org/M2E_FAQ#Maven_Integration_for_Eclipse_vs._Mav > > en_eclipse:eclipse_plugin > > > > -----Original Message----- > > From: ahu...@apache.org [mailto:ahu...@apache.org] > > Sent: Wednesday, March 13, 2013 8:22 PM > > To: cloudstack-comm...@incubator.apache.org > > Subject: [2/2] git commit: refs/heads/master - Added a shell script to > > set the maven profiles in eclipse > > > > Updated Branches: > > refs/heads/master 1079d63b6 -> 164d3a1a3 > > > > > > Added a shell script to set the maven profiles in eclipse > > > > > > Project: > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo > > Commit: http://git-wip-us.apache.org/repos/asf/incubator- > > cloudstack/commit/164d3a1a > > Tree: http://git-wip-us.apache.org/repos/asf/incubator- > > cloudstack/tree/164d3a1a > > Diff: http://git-wip-us.apache.org/repos/asf/incubator- > > cloudstack/diff/164d3a1a > > > > Branch: refs/heads/master > > Commit: 164d3a1a39f3d0b9f52a1254dd7a53ee37d957c4 > > Parents: 0115133 > > Author: Alex Huang <alex.hu...@citrix.com> > > Authored: Wed Mar 13 20:20:10 2013 -0700 > > Committer: Alex Huang <alex.hu...@citrix.com> > > Committed: Wed Mar 13 20:21:58 2013 -0700 > > > > ---------------------------------------------------------------------- > > tools/eclipse/set-eclipse-profile.sh | 26 > ++++++++++++++++++++++++++ > > 1 files changed, 26 insertions(+), 0 deletions(-) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/incubator- > > cloudstack/blob/164d3a1a/tools/eclipse/set-eclipse-profile.sh > > ---------------------------------------------------------------------- > > diff --git a/tools/eclipse/set-eclipse-profile.sh > > b/tools/eclipse/set-eclipse- profile.sh new file mode 100644 index > > 0000000..1abc662 > > --- /dev/null > > +++ b/tools/eclipse/set-eclipse-profile.sh > > @@ -0,0 +1,26 @@ > > +#!/bin/bash > > +# Licensed to the Apache Software Foundation (ASF) under one # or > > +more contributor license agreements. See the NOTICE file # > > +distributed with this work for additional information # regarding > > +copyright ownership. The ASF licenses this file # to you under the > > +Apache License, Version 2.0 (the # "License"); you may not use this > > +file except in compliance # with the License. You may obtain a copy > > +of the License at # > > +# http://www.apache.org/licenses/LICENSE-2.0 > > +# > > +# Unless required by applicable law or agreed to in writing, # > > +software distributed under the License is distributed on an # "AS IS" > > +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either > express > > +or implied. See the License for the # specific language governing > > +permissions and limitations # under the License. > > + > > +for file in `find . -name org.eclipse.m2e.core.prefs | xargs`; do > > + if grep -q activeProfiles=eclipse $file; then > > + echo Skipping $file; > > + else > > + echo Replacing $file; > > + sed -i s/activeProfiles=/activeProfiles=eclipse/g $file; > > + fi; > > +done > > \ No newline at end of file