原文链接:http://wiki.hudson-ci.org/display/HUDSON/Building+Hudson
构建Hudson需要JDK 1.6.x(JRE是不够的)和Maven 2.x(如果你使用2.0.x版本,那么是2.0.6以上的版本), 下面是Linux的alias命令,可以用来切换到jdk1.6:
alias jdk6='export JAVA_HOME=$JAVA_6_HOME ; export PATH=$JAVA_6_HOME/bin:$PATH'
问题:
-
测试套件需要一个图形环境。请看这里
要构建能更改的Hudson,使用以下步骤:
-
签出源代码
$ svn co https://svn.dev.java.net/svn/hudson/trunk/hudson $ svn co https://svn.dev.java.net/svn/hudson/trunk/www
-
进入
hudson/main
目录$ cd hudson/main
-
使用Maven2构建
$ mvn install -Dmaven.test.skip=true
谨防Cygwin1.5
有些Hudson文件路径相当长,如果你的Subversion是装在Cygwin1.5上的,Cygwin限制路径的最大长度为256个字符,那么当你签出Hudson代码时,Subversion就可能会报“系统找不到指定路径”的错误。
如果你想构建所有的插件,那么请在“hudson
”目录执行Maven命令。
如果询问要用户名/密码,你可以使用你的java.net ID,或者用“guest”用户名,密码为空。
trunk/hudson
目录是Hudson的产品目录--所有的源代码和相关文件。trunk/www
目录是Hudson网站信息并包含chanelog.html,如果你成为一个提交者那么就需要修改这个文件。
第一次构建时间会比较长,因为Maven需要下载大量的依赖库。你还是需要Java6来构建Hudson(尽管Hudson可以运行在Java5上,对于Mac用户,Java6只对酷睿2可用--请看http://landonf.bikemonkey.org/2009/05/17#OpenJDK6_MacPorts.20090516对于OpenJDK的10.4和10.5版)。
如果在构建的最后出现 BUILD SUCCESSFUL,说明构建成功了。
构建可能出现的问题:
-
一些文件使用或者覆盖不赞成使用的API。
解决办法:重新编译,使用
-Xlint:deprecation
编译参数查看详细说明。或者使用-Xlint:-deprecation
编译参数忽略 -
一些文件使用未经检查或者不安全的操作
解决办法:重新编译,使用
-Xlint:unchecked
编译参数查看详细说明。或者使用-Xlint:-unchecked
编译参数忽略
最后你应该看到hudson/main/war/target/hudson.war
文件,是刚才构建的结果。
注意
如果你绑定了http代理,你需要Maven2.0.5以上版本,如果你使用Maven2.0.4,这里有一个著名的BUG的解决办法。
现在的javac存在一个bug,构建的时候可能报如下错误。如果你遇到了,试试不使用“clean
”重新编译。
The system is out of resources. Consult the following stack trace for details. java.lang.StackOverflowError at com.sun.tools.javac.code.Types.adaptRecursive(Types.java:2964) at com.sun.tools.javac.code.Types.adapt(Types.java:2995) at com.sun.tools.javac.code.Types.adaptRecursive(Types.java:2956) ....... ......... INFO ------------------------------------------------------------------------ ERROR BUILD ERROR INFO ------------------------------------------------------------------------ INFO Fatal error compiling
有报告说在调用NetBeans之前设置MAVEN_OPTS
环境变量包含“-Xmx177M
”可以避免这个问题。对于OS X系统可以在Terminal.app
加入:
export MAVEN_OPTS="-Xmx177M" open /Applications/NetBeans/NetBeans/ 6.7.app
注意
如果使用“mvn clean
”得到下面这个错误:
[ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Failed to resolve artifact. Missing: ---------- 1) org.jvnet.hudson.plugins.hudsontrayapp:client:jar:0.7.3-SNAPSHOT Try downloading the file manually from the project website.
你可以先进入plugin/hudsontrayapp
目录执行mvn install
,然后再回来执行mvn clean
1. 配置工作环境
要工作在Hudson的现有代码上,你需要生成你的IDE项目文件(注意:这些命令最好在Maven离线状态下运行(也就是使用-o
选项),这样会快速的执行完成,如果你之前没有运行过“mvn install
”,可能会运行出错。):
// 如果你使用Eclipse
$ mvn -DdownloadSources=true eclipse:eclipse
NetBeans(6.7+)用户只需要直接打开POM:选择菜单File → Open Project并导航到Hudson所在目录。IntelliJ IDEA用户可以直接打开Maven POM。
一但你执行了上面的命令,你就可以按照这个Eclipse工作步骤手册设置Eclipse环境。由于Eclipse存在一个Bug,Eclipse用户可能需要在项目导入workspace后,从source文件夹列表中移除src/main/resources
。更详细的内容请查看邮件列表
注意
如果你的IDE报“Messages”类没有找到,这是因为IDE假定这些类已经生成了,只要运行一次Maven构建这些类就会出现了。如果还是不能看到这些类,那要确定你的IDE的编译路径是否包含了target/generated-sources
。
2. 调试Hudson
Maven Jetty plugin提供了一个方便的调试环境,但是由于一些因素我们维护了一个更改的插件版本并且重命名,但是参数是不变的。运行下面的命令来调试Hudson,然后在浏览器中打开http://localhost:8080:
# To change the port run mvnDebug hudson-dev:run -Dport=9090$ cd main/war
$ mvnDebug hudson-dev:run
这指定Maven的调试端口为8000。你可以使用IED通过这个端口远程调试。一旦开始运行,请保持这个运行,Jetty会获取所有的动态改变:
-
当你更改
core/src/main/resources
内的文件,在浏览器中使用F5查看更新。 -
当你更改静态资源
war/resources
内的文件,在浏览器中使用F5查看更新。 -
当你更改Java源文件,在你的IDE中编译,Jetty会自动热部署,你不需要运行
mvn
命令来处理。 -
NetBeans用户只要调试
main/war
即可。
3. 其它技巧
-
考虑使用Maven的
-o
选项来避免每次都连接资源库,这会节省很多构建时间。 -
当Maven报错的时候,试着“
"cd $HUDSON/main; mvn clean install
”。 -
如果你不想再测试上耽误时间,可以在Maven上加入“
-Dmaven.test.skip=true
”选项来跳过测试。 -
如果你的错误这里没有提到,请发邮件到开发列表中。开发者会频繁的查看这个列表。如果你不想为你的问题等很长时间,请在本文的回复中提交你的问题。
4. 第三方认证
来自YourKit Java Profiler赞助商的声明,它为Hudson提供了免费的许可
Open-source license for YourKit Java Profiler
YourKit提供了一些开源项目,用来全方位的分析Java性能。YourKit,LLC是一个智能、创新的工具,用来分析Java和.NET应用。查看YourKit的主导产品:YourKit Java Profiler和YourKit ASP.NET Profiler。
Open-source license for StackProbe Profiler
StackProbe是一个提供堆分析的开源项目。