Using Eclipse With CloudStack
As part of switching to Apache Maven for building CloudStack, the .classpath and .project files used by Eclipse were removed. This page describes how to get CloudStack loaded into an Eclipse workspace. For more details on the actual build process with maven see How to build CloudStack
Use a Recent Eclipse Build
These steps have been tested with Eclipse Indigo and Eclipse Juno- it's suggested you use that or a newer build.
Start with a clean workspace
To minimize confusion, start with a clean workspace with no other projects.
Clone CloudStack via git
Download the CloudStack source code via git with:
git clone https://git-wip-us.apache.org/repos/asf/cloudstack.git |
Install M2E
This wiki page shows how to install the Maven integration for Eclipse plugin. (For those using Yoxos, just search for M2E and add it to your Eclipse build)
After installing the plugin, restart Eclipse.
Import CloudStack
Now you can import CloudStack using the M2E plugin:
- Go to File->Import...
- Under Maven select "Existing Maven Projects" and click Next
- Browse to and select the root directory of the CloudStack source tree. Once selected, Eclipse will scan the source for pom.xml files. Make sure all are selected, then click the Finish button.
Eclipse will import the projects and build the code. At this point you should be able to develop and debug code as usual within Eclipse.
Making Eclipse Work Better with CloudStack
Give Eclipse More Memory
CloudStack is a big project and it requires more memory for Eclipse. Here's how to give it more memory.
- cd [eclipse home]
- vi eclipse.ini
- Change or add the following properties
- -Xms1024m
- -Xmx2048m
- -XX:PermSize=512m
- -XX:MaxPermSize=1024M
Eliminate duplicate resources
CloudStack has a lot of projects that are really just for grouping the different type of projects. The problem is in Eclipse, the files that belong in sub-projects also show up in the projects. This causes a lot of problems with the Open Resource dialogue, which is often used to quickly get to a file if you know the filename already. These problems include the multiple copies of the same .class files showing up and multiple copies of the same .java file showing up. If you select the wrong .java file, then a lot of the references doesn't work. Upon further inspection, the reason is because the same .java and .class file is included by both the project and the parent project. To get rid of this problem, do the following. Unfortunately, you have to do this for every parent project.
- Right click on the project and select Properties.
- Go to Resource->Resource Filters.
- Click on Add...
- Select Exclude all
- Select Folders
- Click Regular Expression
- In the entry box, type [a-zA-Z0-9].*
- Click OK
- Click OK
What this does is to tell Eclipse that the sub-directories under parent projects should not be included in the resource list, thus avoiding the the duplicate resources in the Open Resource dialogue box. If the parent project does have a directory that you want, then you can add that to a include filter. Note that you can not use * as the folders because that would exclude the .settings folder which eclipse uses to keep its metadata and will cause the m2e plugin to have problems.
Here's a list of parent projects you should do this with:
- cloudstack
- cloud-services
- cloudstack-framework
- cloud-engine
- cloudstack-plugins
Avoiding conflicts between builds outside of Eclipse and Eclipse's auto-building
Eclipse by default uses the the Maven pom.xml to tell it where to put its generated files. Unfortunately, that has one big disadvantage. Everytime a "mvn clean" is done outside of Eclipse, Eclipse will start rebuilding. To avoid this, CloudStack has an Eclipse profile that puts all of the Eclipse generated files in a directory called target-eclipse. In order to activate this, you must do the following to every project. There is a shortcut for the existing projects so please read the shortcut first before deciding to do the following. You still need to perform these steps manually if a new project is added after you ran the shortcut.
- Right click on the project and select Properties
- Select Maven
- In the entry box under "Active Maven Profile", type in eclipse
- Click OK
CloudStack has a lot of projects so doing the above by hand for every project takes time so here's a shortcut provided for existing projects.
- Exit Eclipse (assuming you've already installed the m2e plugin)
- cd [cloudstack home]
- bash -x tools/eclipse/set-eclipse-profile.sh
- Restart Eclipse
Bonus Track: Running CloudStack Through Eclipse
The Maven integration makes it reasonably easy to run and debug CloudStack through Eclipse. Basically, you can add the 'mvn' command-line calls to your Eclipse Workspace by defining corresponding Run Configurations.
The Maven commands we want to add as Run Configurations are discussed in detail on the How to build CloudStack page. The steps we want to add can be summarised as
- Clean (remove previous versions of source).
- Install (build new version of source)
- Database Setup (deploy a database with default settings, e.g. default password)
- Jetty-based server launch (Jetty is an alternative to Tomcat suited to development)
Now, we could have combined steps 1 & 2 above, but splitting them allows incremental compilation. In contrast, combining them will make for a very slow build. Also, you only need to setup the database once after doing a Clean.
WRT to debugging: Use the Jetty-based server lauch. First, tweak this Debug Configuration for source-level debugging: Use Run -> Debug Configurations, and check the Resolve Workspace Artifacts flag.
Creating a Run Configuration
For each Run Configuration to be added:
- From menu bar, select Run -> Run Configurations...
- Double click on Maven Build. This will create a Maven run configuration with the name New_configuration
- Update the Name to something corresponding to what happens in the step, and set Base Directory to
$project_loc:cloudstack(This tells Eclipse that the base directory for execution is the folder with a _pom.xml_ that has an <artifactId> with the value cloudstack) - From each mvn command, place the -P argument in the Profiles: textbox, Add... any parameters expressed as key=value , and place the remainder of the command in the Goals: textbox.
Maven will download everything needed to run CloudStack with Jetty, build the code, and run the UI. You can connect to it via http://localhost:8080/client.
The following commands were correct at the time of writing. If they don't work, double check the How to build CloudStack page, and if you have any compassion update this section of the wiki.
Clean:
mvn clean |
Base directory: $project_loc:cloudstack
Goals: clean install
Profiles: <empty>
Install (i.e. build):
mvn install |
Base directory: $project_loc:cloudstack
Goals: clean install
Profiles: <empty>
Deploy Database (do once after a 'Clean'): mvn install:
mvn -P developer -pl developer -Ddeploydb=true |
Base directory: $project_loc:cloudstack
Goals: -pl developer
Profiles: developer
Parameter Name: deploydb=true
Jetty-based launch (of management server)
mvn -pl client jetty:run |
Base directory: $project_loc:/cloud-client-ui
Goals: jetty:run
Profiles: <empty>
(Optional) launch the jetty based awsapi server:
mvn -pl awsapi jetty:run |
Base directory: $project_loc:cloudstack
Goals: -pl awsapi jetty:run
Profiles: <empty>
Remote Debugging
You can use Eclipse to attach to the Management Server and debug CloudStack. You setup a Remote Debug Session (Run > Debug Configuration), connect to Port 8787. Typically you would use the project you want to debug as the target and include other projects that you need to debug, e.g. cloud-agent, cloud-api, cloud-core and cloud-server.
Using Eclipse With CloudStack的更多相关文章
- 虚拟化平台cloudstack(7)——新版本的调试
调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 源码下载及调试 上面的几个软件在上一篇中已经介绍了. 在新的版本 ...
- 虚拟化平台cloudstack(6)——使用maven:jetty调试
调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 apache ant JDK的配置和安装 安装可以参考: htt ...
- CloudStack 4.2 新功能:集成SNMP进行系统监控(原理篇)
作者微博:http://weibo.com/tianchunfeng CloudStack 4.2 版本发布在即,相信不久后对 4.2 版本新功能(共有13个)的介绍会逐渐多起来.因为无论是从架构底层 ...
- 虚拟化平台cloudstack新版本的调试
虚拟化平台cloudstack(7)——新版本的调试 调试环境 ubuntu 12.04 JDK1.7 apache-maven-3.10 eclipse 4.2 Juno mysql 5 源码下载及 ...
- java+ssh+eclipse开发过程问题记录
原文 http://www.sdfengxi.com/?p=408 最近在忙着的项目是基于cloudstack平台的管理平台,因为CloudStack使用java开发,管理机上已部署好rhel+t ...
- eclipse 快捷键大全
注:因eclipse版本.电脑配置等原因 有些快捷键可能导致不可用(遇到些许问题可在下方评论) [Ct rl+T] 搜索当前接口的实现类 1. [ALT +/] 此快捷键为用户编辑的好帮手,能为 ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
- Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: PermGen space的错误, 我们知道可以通过jvm ...
- 修改eclipse皮肤
习惯了vim黑色背景的程序猿们想必用eclipse时会倍感的不适应吧,不过没关系,因为eclipse的皮肤是可以自己定制的! 下面是我电脑上的eclipse界面,看到这个是不是找回了vim的感觉呢? ...
随机推荐
- T-SQL备忘(5):查看执行计划
先理解几个概念:表扫描.聚集索引扫描.聚集索引查找.索引扫描.书签查找. [查看执行计划] 在理解概念之前先得知道如何查看执行计划—Ctrl+L.如下图: 注:SQL Server的执行计划是从右向左 ...
- 操作系统——CPU、计算机的构成
CPU主要由什么构成? CPU包括运算逻辑部件.寄存器部件和控制部件等. 逻辑部件:可以执行点或浮点算术远算操作.移位操作以及逻辑操作,也可以执行地址运算和转换. 寄存器部件:存储程序.数据和各种信号 ...
- 【转】iOS开发-Protocol协议及委托代理(Delegate)传值
原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...
- RAC实例 表空间 维护
先配置一下监听,这样我们就可以从客户端进行连接了. 我这里写了三种连接. 第一种是正常方式,一般都采用这种方式,后面的rac1和rac2 是方便测试.因为如果用第一种方式的话,客户端连哪个实例是随机的 ...
- MVC2.0前置
.NET MVC执行过程: 1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 在使用MVC中是由IgnoreRoute()辅助方法对比成功的,会导致程序直接跳离 ...
- table应用之colspan与rowspan
<table border=" borderColorDark="#66ff33"> <tr> <td rowspan=" ali ...
- N的互质数----欧拉函数
Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都 ...
- mybatis源码学习: 编译的方法
mybatis3用了一段时间,抽出时间来研究一下.具体用法参考官方文档就行,源码在这里.mybatis相对而言,规模较小,可以从中学习如何编写高质量的java项目. mybatis3使用maven管理 ...
- IT智力题
题目1:你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你 如何给你的工人付费? 答案:两次弄断就应分成三份,我把金条分 ...
- bzoj 2190 [SDOI2008]仪仗队(欧拉函数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2190 [题意] n*n的正方形,在(0,0)格点可以看到的格子数目. [思路] 预处理 ...