Window2003下搭建Nexus+Hudson+Git+Maven3

来源:互联网 发布:收益最多的理财软件 编辑:程序博客网 时间:2024/06/06 04:45

最近,为了规范开发过程,采用Maven3将之前的产品进行重构。目的只要是:

1:组件化,实现源码解藕。产品线下不同产品共同的部分可以一起维护,减少维护升级代价;

2:产品代码和二次开发代码相分离。目的是让产品和二次开发可持续的协同发展;

3:代码和资源相分离。使得美工和编码可以协同发展。

具体重构细节涉及公司技术,就不透路了。下面重点讲下Maven仓库的管理和持续集成。

使用Maven开发需要一个私服,这里用了Nexus。是一个WAR包,拷贝到TOMCAT下就能运行了。注意几个特殊仓库:

3RDPARTY仓库下放了些第三方的JAR包,主要时MAVEN中心仓库没有收录的,比如说ORACLE数据库的连接JAR包等;

RELEASE保存了产品发布版,产品RELEASE时会发布到这里;

SNAPSHOT保存了产品构建版,每次持续集成都会把构建版发布到这里。

持续集成用的是Hudson,由于源码库是GIT管理的,服务器又是Windows的,因此问题多多。也是一个WAR包,拷贝到TOMCAT下就能运行了。在开始前先要在服务器安装些东东的:

JDK是必须的;

TOMCAT也是必须的;

然后是GIT,安装后要配置好SSH的rsa-key,设置GIT的用户名和邮箱;

再者是MAVEN3,安装后要配置Nexus的RELEASE和SNAPSHOT库的用户名和密码;

Hudson配置界面中,先要插件,MAVEN3和GIT是必须装的;然后设置系统配置:

Environment variables需要启用,并且添加HOME变量,指向当前用户主目录,SSH的配置文件.ssh和GIT的配置文件.gitconfig必须在此目录下;

JDK 安装必须添加当前JDK的安装目录;

Git 安装安装必须设置,Path to Git executable指向GIT安装目录下的bin\git.exe;

Maven 3 安装需要设置好MAVEN3的安装目录;

Git plugin设置正确的用户名和EMAIL,这个我设了没起作用,最后还是在用户主目录的.gitconfig文件中设置的;

Maven 3 Builder Defaults最好设置成刚才设置的MAVEN3库,否则后期一不小心就选错了;

邮件通知设置成有效的邮箱,最好测试下,否则添加任务时构建错了无法发送邮件。

系统配置完以后就可以新建任务,然后设置:

Discard Old Builds最好设置下保留构建历史的天数及最大条数;

Git Repositories设置好正确的URL;

Poll SCM我设置的是30 * * * *,表示没小时的30分检测是否有更新,有则构建一次;

Build选择Invoke Maven 3,此时Maven 3一定要选择在系统配置中配置的MAVEN,默认是插件,Goals我设置的是clean package deploy,表示清除、打包、部署,Properties我设置的是maven.test.skip=true,表示忽略单元测试;

E-mail Notification我勾选了,表示构建信息邮件通知,此时系统设置的邮件通知必须设置正确。

至此,就可以手动构建了,或者等待Poll SCM触发时自动构建。


后记:关于自动部署,我尝试使用tomcat6。思路时有新构建时,先停止tomcat,然后删除旧的部署文件,再将新的部署文件拷贝进去,再启动tomcat。遇到的问题时,hudson构建时试图终止所有子进程,这样重新启动tomcat时就会出问题,最终通过计划任务解决,at增加一条计划任务,1分钟后启动tomcat:

d:
cd D:\work\apache-tomcat-6.0.35\bin
call shutdown.bat
ping 127.0.0.1 -n 8 -w 1000>nul
del /Q D:\work\apache-tomcat-6.0.35\webapps\<主工程WAR包名>.war
del /Q D:\work\apache-tomcat-6.0.35\webapps\<资源工程WAR包名>.war
rmdir /S /Q D:\work\apache-tomcat-6.0.35\webapps\<主工程WAR包名>
rmdir /S /Q D:\work\apache-tomcat-6.0.35\webapps\<资源工程WAR包名>
copy "C:\Documents and Settings\Default User\.hudson\jobs\*..*\<主工程WAR包名>.war" "D:\work\apache-tomcat-6.0.35\webapps\<主工程WAR包名>.war"
copy "C:\Documents and Settings\Default User\.hudson\jobs\*..*\<资源工程WAR包名>.war" "D:\work\apache-tomcat-6.0.35\webapps\<资源工程WAR包名>.war"
set hour=%time:~0,3%
set minute=%time:~3,2%
set /a minute=%minute%+1
at %hour%%minute% c:\WINDOWS\system32\cmd.exe /C start /D D:\work\apache-tomcat-6.0.35\bin /B D:\work\apache-tomcat-6.0.35\bin\startup.bat