Jenkins部署Web项目到远程tomcat_ant

一、Web项目介绍

我用的项目是一个三大框架的Web小例子,基本机构如下

171534968.png

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

171551752.png

2.配置插件

首先配置一下生成的版本,在Invoke Ant

171857205.png

Add post-build action里选择Deploy war/ear to a container,目前项目版本70

171914172.png

Tomcat URL只指项目需要部署到的远程tomcat,用户名和密码必须在远程tomcattomcat-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 成功后结果如下

171933577.png

访问http://远程Ip:远程tomcat端口/productsSSH-70/getAllProducts 可以从数据库找到数据

172004626.png