Jenkins+SVN+tomcat+Batch Command(Java web项目打包部署运行)


使用Jenkins有大半年,从来没有关心过部署和后台配置,要知道之前公司可是一个global team在做这个工作,而现在的公司,当然要自己动手,发愤图强。


1. Jenkins Install

官网:http://jenkins-ci.org/

1)war包

官网下载war包,在路径下运行命令:java -jar jenkins.war

也可以做成批处理文件startJenkins.bat,方便每次启动,输入以下内容

set JENKINS_HOME=e:\jenkins
cd /d %JENKINS_HOME%  
java -jar %JENKINS_HOME%\jenkins.war 

2)msi

第一次是用war包装成功的,后来用了几天在搞插件,结果装了一个插件只支持tomcat7,然后jenkins就再也startup不起来了,删了插件也不行,索性删了jenkins重装,但是war包的方法就不管用了(不知道为什么),只好转向msi一键安装包,虽然好用,但是它是默认启动项,而且感觉不够专业。


2. Jenkins Configeration

Global Tool Configuration:



Configure System:




3.  Create a new Job:

Freestyle project



输入SVN Repository URL和SVN的用户名和密码(wy wy),不然会分别报以下两个错误:



svn:

https://192.168.1.9/svn/APL/trunk/products/system/projects/server/AplIot



4. 选择build方式:

此处选择Windows batch command


输入以下内容:

# compile java to class files

javac  -encoding UTF-8 -classpath .;WebRoot\WEB-INF\lib\* src\com\zhyd\apliot\common\*.java src\com\zhyd\apliot\controller\*.java  src\com\zhyd\apliot\dao\*.java src\com\zhyd\apliot\dao\impl\*.java src\com\zhyd\apliot\filter\*.java  src\com\zhyd\apliot\listener\*.java src\com\zhyd\apliot\modbus\dao\*.java src\com\zhyd\apliot\modbus\dao\impl\*.java src\com\zhyd\apliot\modbus\model\*.java  src\com\zhyd\apliot\model\*.java  src\com\zhyd\apliot\server\dao\*.java src\com\zhyd\apliot\server\dao\impl\*.java src\com\zhyd\apliot\task\*.java src\com\zhyd\apliot\test\*.java src\com\zhyd\apliot\util\*.java src\com\zhyd\apliot\xml\dao\*.java  src\com\zhyd\apliot\xml\dao\impl\*.java  -d WebRoot\WEB-INF\classes

cd WebRoot
# 把%workspace%/WebRoot下面的内容打包为AplIot.war
jar -cvf AplIot.war ./*

注意事项:

1)javac 编译时报"编码GBK的不可映射字符"
解决方法是javac -encoding UTF-8 XXX.java

2)-classpath参数指定依赖的第三方jar所在的目录(-classpath .;WebRoot\WEB-INF\lib\*),到具体目录时不能使用*.jar来匹配所有依赖的jar包,而要使用*

3)注意路径和war包生成的结构,如果想把某个文件夹中所有文件打包,要cd到该文件夹内再打包,不然,会把外层文件夹一起打包,破坏了war包结构,导致tomcat解压运行后无法显示web网页


5. 选择Post-build Actions

此处使用了Deploy Plugin插件



注意事项:

1)

WAR/EAR files: WebRoot/AplIot.war
Context path: /AplIot
username: tomcat
password: tomcat
http://192.168.1.76:8080    -> tomcat远端地址,此处使用的是本机虚拟机地址

2)WAR/EAR files是%workspace%下面的相对地址,不用带%workspace%名字

3)Context path如果带/的话,Tomcat URL最后就不要带

4)要把应用服务器的防火墙关闭

5)tomcat默认的登录是注释的,我们需要打开。在tomcat/conf/tomcat-users.xml下添加以下内容,记得把注释符号删除

  <role rolename="tomcat" /> 
  <role rolename="admin"/> 
  <role rolename="admin-gui"/> 
  <role rolename="manager"/> 
  <role rolename="manager-gui"/> 
  <role rolename="manager-script"/> 
  <user username="tomcat" password="tomcat"roles="tomcat,admin-gui,admin,manager,manager-gui,manager-script"/>

6)要先把虚拟机里的tomcat启动(startup.bat),再运行jenkins job,不然会报错

Caused by:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException

7)报错Unsupported major.minor version 51.0解决办法可参考:http://www.111cn.net/jsp/Jsp-Servlet/45158.htm


Root cause:用jdk7编译的class文件放到基于jdk6运行在tomcat之中,就会报这个错。

Solution: 在Jenkins的JDK配置的版本与tomcat运行的jdk的版本(也就是电脑环境变量设置的jdk版本)一致。

8)Jenkins报错Caused by:java.net.ConnectException: Connection timed out: connect是因为连不上远端tomcat。

我一直在连接本机ip(192.168.1.75)对应的tomcat,一直报这个错,后来分析应该是因为本机ip对应的tomcat被Jenkins占用,后来就把tomcat的URL配成本机的虚拟机对应的ip(192.168.1.76)即可。


6. 登陆
登陆虚拟机,输入网页:
http://192.168.1.76:8080/AplIot/webSite-iot/html/login.html
http://localhost:8080/AplIot/webSite-iot/html/login.html
可登陆说明部署正确。


参考文章:
http://files.cnblogs.com/files/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf
http://blog.csdn.net/kdevn/article/details/8459448
http://blog.csdn.net/qq_32517251/article/details/52469623

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章