Jenkins部署Web项目到远程tomcat_ant版
一、Web项目介绍
我用的项目是一个三大框架的Web小例子,基本机构如下
Build.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project>
<projectname="productsSSH"default="war"basedir=".">
<!-- <property file="build.properties"/>-->
<!-- 用来发布的全局属性 -->
<propertyenvironment="env"/>
<propertyname="productsSSH.src"value="src"/>
<propertyname="productsSSH.web"value="WebContent"/>
<propertyname="productsSSH.lib"value="${productsSSH.web}/WEB-INF/lib"/>
<propertyname="productsSSH.build"value="${productsSSH.web}/WEB-INF/classes"/>
<propertyname="name"value="productsSSH"/>
<propertyname="name.version"value="${env.JOB_NAME}-${env.BUILD_NUMBER}"/>
<!-- 用来生产数据库 -->
<propertyname="driver"value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://远程IP:3306/"/>
<propertyname="username"value="远程数据库用户名"/>
<propertyname="password"value="远程数据库密码"/>
<propertyname="database.sql"value="database.sql"/>
<!--定义本地tomcat所在目录 用来编译打包项目-->
<propertyname="tomcat.home"value="本地tomcat地址"/>
<propertyname="tomcat.lib"value="${tomcat.home}/lib"/>
<!--<property name="deploy.path" value="${tomcat.home}/webapps"/>-->
<targetname="clean">
<echomessage="清理掉原编译文件夹"/>
<deletedir="${productsSSH.build}"/>
</target>
<targetname="createDb"depends="clean">
<echomessage="创建数据库"/>
<sqldriver="${driver}"url="${url}"userid="${username}"
password="${password}"src="${database.sql}">
<classpath>
<pathelementlocation="${productsSSH.lib}/mysql-connector-java-5.1.25-bin.jar"/>
</classpath>
</sql>
</target>
<!-- 配置项目lib路径 -->
<pathid="master_classpath">
<filesetdir="${productsSSH.lib}">
<includename="*.jar"/>
</fileset>
<filesetdir="${tomcat.lib}">
<includename="*.jar"/>
</fileset>
<pathelementpath="${productsSSH.build}"/>
</path>
<targetname="compile"depends="createDb">
<echomessage="编译项目"/>
<mkdirdir="${productsSSH.build}"/>
<javacdestdir="${productsSSH.build}"debug="true"
includeantruntime="on">
<srcpath="${productsSSH.src}"/>
<classpathrefid="master_classpath">
</classpath>
</javac>
</target>
<targetname="copy"depends="compile"description="将需要的一些拷入WebContent下的WEB-INF\classes文件夹>
<copytodir="${productsSSH.build}"preservelastmodified="true">
<filesetdir="${productsSSH.src}">
<includename="*.xml"/>
<includename="*.dtd"/>
</fileset>
</copy>
<copytodir="${productsSSH.build}/com/jia/entity"preservelastmodified="true">
<filesetdir="${productsSSH.src}/com/jia/entity">
<includename="*.xml"/>
</fileset>
</copy>
<!--<copy todir="${deploy.path}/${name}" preservelastmodified="true">
<fileset dir="${productsSSH.web}">
<include name="**/*.*"/>
</fileset>
</copy>-->
</target>
<targetname="war"depends="copy">
<echomessage="打包工程"/>
<wardestfile="${name.version}.war"webxml="${productsSSH.web}/WEB-INF/web.xml">
<filesetdir="${productsSSH.web}">
<includename="**/*.*"/>
</fileset>
</war>
<!--<echo message="打包的工程再次拷贝到tomcat下"/>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>-->
</target>
</project>
注:注释掉的部分是部署到本地tomcat
二、Jenkins配置远程部署
1.安装插件
Manage Jenkis---->Manage Plugins---->Available找到Deploy to container Plugin安装插件 安装成功后可见插件为1.9版
2.配置插件
首先配置一下生成的版本,在Invoke Ant里
然后Add post-build action里选择Deploy war/ear to a container,目前项目版本70
Tomcat URL只指项目需要部署到的远程tomcat,用户名和密码必须在远程tomcat的tomcat-users.xml中配置
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user password="caojia" roles="admin-gui, manager-gui,manager-script,manager-jmx,manager-status" username="caojia"/>
三、构建
保证远程tomcat已启动
Build Now 成功后结果如下
访问http://远程Ip:远程tomcat端口/productsSSH-70/getAllProducts 可以从数据库找到数据