cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Huang <Alex.Hu...@citrix.com>
Subject eclipse and maven working together...
Date Thu, 14 Mar 2013 03:33:01 GMT
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 <alex.huang@citrix.com>
Authored: Wed Mar 13 20:20:10 2013 -0700
Committer: Alex Huang <alex.huang@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


Mime
View raw message