您的位置:首页 > 运维架构 > Tomcat

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

2017-07-06 16:13 801 查看
使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: