You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Alex Huang <Al...@citrix.com> on 2013/03/14 04:33:01 UTC

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._Maven_eclipse:eclipse_plugin

-----Original Message-----
From: ahuang@apache.org [mailto:ahuang@apache.org] 
Sent: Wednesday, March 13, 2013 8:22 PM
To: cloudstack-commits@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 <al...@citrix.com>
Authored: Wed Mar 13 20:20:10 2013 -0700
Committer: Alex Huang <al...@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


Re: eclipse and maven working together...

Posted by Rohit Yadav <bh...@apache.org>.
Min, a lot of maven plugins may not be thread safe, maven-site-plugin
is one of them that's why you see this. You can safely ignore
maven-site-plugin's warnings.

Regards.

On Fri, Mar 15, 2013 at 1:06 AM, Min Chen <mi...@citrix.com> wrote:
> Tried this command
>
> mvn -T 3 -o -P impatient,systemvm clean install
>
>
> On my mac, and saw this warning in the output:
>
> [WARNING] The following plugins are not marked @threadSafe in Apache
> CloudStack Server:
> [WARNING] org.apache.maven.plugins:maven-site-plugin:3.1
> [WARNING] *****************************************************************
> [WARNING] *****************************************************************
> [WARNING] * Your build is requesting parallel execution, but project      *
> [WARNING] * contains the following plugin(s) that are not marked as       *
> [WARNING] * @threadSafe to support parallel building.                     *
> [WARNING] * While this /may/ work fine, please look for plugin updates    *
> [WARNING] * and/or request plugins be made thread-safe.                   *
> [WARNING] * If reporting an issue, report it against the plugin in        *
> [WARNING] * question, not against maven-core                              *
> [WARNING] *****************************************************************
> [WARNING] The following plugins are not marked @threadSafe in Apache
> CloudStack Agents:
> [WARNING] org.apache.maven.plugins:maven-dependency-plugin:2.5.1
> [WARNING] org.apache.maven.plugins:maven-site-plugin:3.1
> [WARNING] *****************************************************************
>
>
> Did you see this?
>
>
> Thanks
> -min
>
> On 3/13/13 9:17 PM, "Alex Huang" <Al...@citrix.com> wrote:
>
>>As a point of reference, on my i7 dual core HT enabled, it actually was
>>better with -T 2.  The time was just under 3 minutes.  With -T 3, the
>>time was just over 3 minutes.
>>
>>As I was going through this, I noticed there's a lot of inefficiencies in
>>the build.  There was a lot of jar files being copied all over the place.
>> Will take a look at how to reduce that, especially for dev-test
>>environment.  The only problem is I'm not sure if changes to these copies
>>would affect rpm building or not.
>>
>>--Alex
>>
>>> -----Original Message-----
>>> From: Alex Huang [mailto:Alex.Huang@citrix.com]
>>> Sent: Wednesday, March 13, 2013 9:01 PM
>>> To: cloudstack-dev@incubator.apache.org
>>> Subject: RE: eclipse and maven working together...
>>>
>>> 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.Huang@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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
>>> > > Sent: Wednesday, March 13, 2013 8:22 PM
>>> > > To: cloudstack-commits@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 <al...@citrix.com>
>>> > > Authored: Wed Mar 13 20:20:10 2013 -0700
>>> > > Committer: Alex Huang <al...@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
>>
>

Re: eclipse and maven working together...

Posted by Rohit Yadav <bh...@apache.org>.
Make it more faster using -o so it won't download or check artifacts
dependencies.

On Thu, Mar 14, 2013 at 9:47 AM, Alex Huang <Al...@citrix.com> wrote:
> As a point of reference, on my i7 dual core HT enabled, it actually was better with -T 2.  The time was just under 3 minutes.  With -T 3, the time was just over 3 minutes.
>
> As I was going through this, I noticed there's a lot of inefficiencies in the build.  There was a lot of jar files being copied all over the place.  Will take a look at how to reduce that, especially for dev-test environment.  The only problem is I'm not sure if changes to these copies would affect rpm building or not.
>
> --Alex
>
>> -----Original Message-----
>> From: Alex Huang [mailto:Alex.Huang@citrix.com]
>> Sent: Wednesday, March 13, 2013 9:01 PM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: RE: eclipse and maven working together...
>>
>> 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.Huang@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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
>> > > Sent: Wednesday, March 13, 2013 8:22 PM
>> > > To: cloudstack-commits@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 <al...@citrix.com>
>> > > Authored: Wed Mar 13 20:20:10 2013 -0700
>> > > Committer: Alex Huang <al...@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
>

Re: eclipse and maven working together...

Posted by Min Chen <mi...@citrix.com>.
Tried this command 

mvn -T 3 -o -P impatient,systemvm clean install


On my mac, and saw this warning in the output:

[WARNING] The following plugins are not marked @threadSafe in Apache
CloudStack Server:
[WARNING] org.apache.maven.plugins:maven-site-plugin:3.1
[WARNING] *****************************************************************
[WARNING] *****************************************************************
[WARNING] * Your build is requesting parallel execution, but project      *
[WARNING] * contains the following plugin(s) that are not marked as       *
[WARNING] * @threadSafe to support parallel building.                     *
[WARNING] * While this /may/ work fine, please look for plugin updates    *
[WARNING] * and/or request plugins be made thread-safe.                   *
[WARNING] * If reporting an issue, report it against the plugin in        *
[WARNING] * question, not against maven-core                              *
[WARNING] *****************************************************************
[WARNING] The following plugins are not marked @threadSafe in Apache
CloudStack Agents:
[WARNING] org.apache.maven.plugins:maven-dependency-plugin:2.5.1
[WARNING] org.apache.maven.plugins:maven-site-plugin:3.1
[WARNING] *****************************************************************


Did you see this?


Thanks
-min

On 3/13/13 9:17 PM, "Alex Huang" <Al...@citrix.com> wrote:

>As a point of reference, on my i7 dual core HT enabled, it actually was
>better with -T 2.  The time was just under 3 minutes.  With -T 3, the
>time was just over 3 minutes.
>
>As I was going through this, I noticed there's a lot of inefficiencies in
>the build.  There was a lot of jar files being copied all over the place.
> Will take a look at how to reduce that, especially for dev-test
>environment.  The only problem is I'm not sure if changes to these copies
>would affect rpm building or not.
>
>--Alex
>
>> -----Original Message-----
>> From: Alex Huang [mailto:Alex.Huang@citrix.com]
>> Sent: Wednesday, March 13, 2013 9:01 PM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: RE: eclipse and maven working together...
>> 
>> 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.Huang@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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
>> > > Sent: Wednesday, March 13, 2013 8:22 PM
>> > > To: cloudstack-commits@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 <al...@citrix.com>
>> > > Authored: Wed Mar 13 20:20:10 2013 -0700
>> > > Committer: Alex Huang <al...@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
>


RE: eclipse and maven working together...

Posted by Alex Huang <Al...@citrix.com>.
As a point of reference, on my i7 dual core HT enabled, it actually was better with -T 2.  The time was just under 3 minutes.  With -T 3, the time was just over 3 minutes.

As I was going through this, I noticed there's a lot of inefficiencies in the build.  There was a lot of jar files being copied all over the place.  Will take a look at how to reduce that, especially for dev-test environment.  The only problem is I'm not sure if changes to these copies would affect rpm building or not.

--Alex

> -----Original Message-----
> From: Alex Huang [mailto:Alex.Huang@citrix.com]
> Sent: Wednesday, March 13, 2013 9:01 PM
> To: cloudstack-dev@incubator.apache.org
> Subject: RE: eclipse and maven working together...
> 
> 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.Huang@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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
> > > Sent: Wednesday, March 13, 2013 8:22 PM
> > > To: cloudstack-commits@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 <al...@citrix.com>
> > > Authored: Wed Mar 13 20:20:10 2013 -0700
> > > Committer: Alex Huang <al...@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


RE: eclipse and maven working together...

Posted by Alex Huang <Al...@citrix.com>.
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.Huang@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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
> > Sent: Wednesday, March 13, 2013 8:22 PM
> > To: cloudstack-commits@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 <al...@citrix.com>
> > Authored: Wed Mar 13 20:20:10 2013 -0700
> > Committer: Alex Huang <al...@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


Re: eclipse and maven working together...

Posted by Chip Childers <ch...@sungard.com>.
On Wed, Mar 13, 2013 at 08:58:23PM -0700, Ahmad Emneina wrote:
> I'd update the building with maven section on cwiki. but I dont know how to
> describe the impatient profile, beyond 'it pleases alex'.

+1 to adding this to the wiki (and +1 to Alex explaining himself!)



Re: eclipse and maven working together...

Posted by Ahmad Emneina <ae...@gmail.com>.
I'd update the building with maven section on cwiki. but I dont know how to
describe the impatient profile, beyond 'it pleases alex'.


On Wed, Mar 13, 2013 at 8:48 PM, Alex Huang <Al...@citrix.com> wrote:

> 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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
> > Sent: Wednesday, March 13, 2013 8:22 PM
> > To: cloudstack-commits@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 <al...@citrix.com>
> > Authored: Wed Mar 13 20:20:10 2013 -0700
> > Committer: Alex Huang <al...@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
>
>

RE: eclipse and maven working together...

Posted by Rajesh Battala <ra...@citrix.com>.
Thanks a lot Alex 

> -----Original Message-----
> From: Alex Huang [mailto:Alex.Huang@citrix.com]
> Sent: Thursday, March 14, 2013 9:19 AM
> 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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
> > Sent: Wednesday, March 13, 2013 8:22 PM
> > To: cloudstack-commits@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 <al...@citrix.com>
> > Authored: Wed Mar 13 20:20:10 2013 -0700
> > Committer: Alex Huang <al...@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


RE: eclipse and maven working together...

Posted by Alex Huang <Al...@citrix.com>.
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.Huang@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: ahuang@apache.org [mailto:ahuang@apache.org]
> Sent: Wednesday, March 13, 2013 8:22 PM
> To: cloudstack-commits@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 <al...@citrix.com>
> Authored: Wed Mar 13 20:20:10 2013 -0700
> Committer: Alex Huang <al...@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