前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给大家。如果有哪些说的不对的地方,还请大家不吝赐教。

1、工具版本

Ant:apache-ant-1.9.1

Jenkins:jenkins-2.46.3

Tomcat:apache-tomcat-8.0.43

系统:window7

开发工具:IDEA

2、Web项目

简述:这里只是在本地简单的构建了一个Web项目,并没有使用 Maven 或者在 Git 上托管。

3、在Web工程中加入Ant,利用Ant来自动构建部署

  • 在项目的根目录下新建build.xml
 <?xml version="1.0" encoding="UTF-8"?>
<project name="demo" default="deleteWar" basedir=".">
<property name="build" value="${basedir}/build"/>
<property name="build.class" value="${build}/classes"/>
<property name="src" value="${basedir}/src"/>
<property name="web" value="${basedir}/web"/>
<property name="lib" value="${web}/WEB-INF/lib"/> <!--请将下面的路径改为你本地的路径-->
<property name="webserver" value="D:\apache-tomcat-8.0.43"/> <!--定义CLASSPACH,编译时用到你外部加入的包-->
<path id="classpath">
<pathelement location="${src}"/>
<fileset dir="${lib}" includes="***.jar"/>
</path> <!--删除任务-->
<target name="clean" description="删除">
<echo message="删除目录"/>
<delete dir="${build}"/>
</target> <!--创建一个临时目录-->
<target name="init" description="创建目录" depends="clean">
<echo message="创建目录--以执行"/>
<mkdir dir="${build.class}"/>
</target> <!--编译java源文件-->
<target name="compile" description="编译文件" depends="init">
<echo message="编译文件"/>
<javac srcdir="${src}" destdir="${build.class}">
<classpath refid="classpath"/>
<compilerarg line="-encoding GBK "/>
</javac>
</target> <!--打成WAR包-->
<target name="generwar" depends="compile">
<echo message="打成WAR"/>
<war destfile="${build}/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml">
<fileset dir="web"/>
<lib dir="${lib}"/>
<classes dir="${build.class}"/>
</war>
</target> <!--把WAR放到一个指定目录,这里是直接布署到TOMCAT服务器-->
<target name="fabu" depends="generwar" description="发布">
<copy file="${build}/${ant.project.name}.war" todir="${webserver}/webapps"/>
</target> <!--把打好的WAR删除-->
<target name="deleteWar" depends="fabu" description="删除服务器上的war">
<delete dir="${build}"/>
</target> <!--停止tomcat-->
<target name="stop_tomcat">
<echo>停止tomcat</echo>
<exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">
<env key="CATALINA_HOME" path="${webserver}"/>
<arg value="/c shutdown.bat"/>
</exec>
</target> <!--启动tomcat-->
<!--这里做的主要是部署本地Tomcat服务器的过程,差不多的思路是先把war发布到webapps目录下,接着再重启服务器-->
<target name="start_tomcat" depends="fabu,stop_tomcat">
<echo>启动tomcat</echo>
<exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">
<env key="CATALINA_HOME" path="${webserver}"/>
<arg value="/c startup.bat"/>
</exec>
</target> <!--部署到远程服务器-->
<!--这里模拟了一个利用ant部署到远程服务器的过程,server是ftp服务器IP地址,userid和password是ftp服务器的账号
和密码,remotedir是你在建立服务器时,为服务器建立的目录,我建立的是D:\apache-tomcat-8.0.43\webapps,fileset
是你要上传的文件,要利用ftp上传需要导入两个jar包,commons-net-1.4.0.jar、jakarta-oro-2.0.8.jar
-->
<target name="deploy" depends="generwar">
<ftp server="127.0.0.1"
userid="admin" password="123456" remotedir="/">
<fileset dir="${build}">
<include name="*.war"/>
</fileset>
</ftp>
</target>
</project>
  • 运行Ant来部署项目

  • Ant 的 jar 包导入说明

  • 这里再附属说一下,如何将自己的localhost建立成ftp服务器,我用的是 Quick Easy Ftp Server 4.0.0,下完这个软件后,按照提示下一步、下一步设置好账号和密码即可

4、Jenkins和Ant集成部署项目

  • 自动部署需要一个容器,那Jenkins是怎么知道你的容器的呢?容器插件这个时候就要出场了!
    首页-》系统管理-》管理插件
    搜索deploy,很快就会找到这个deploy to container plugin,这里博主已经安装好了,就不在安装了,记住安装完记得重启!

  • 构建一个自由风格的Jenkins项目,由于我没有托管Git或者使用maven。源码管理那边,只要将你的源码丢进Jenkins目录中workspace你的工程下即可(只有build一次,才会出现workspace目录)

  • 自动发布部署项目。这里介绍两种方式,一种是利用Ant,一种是利用Jenkins将war包发布到对应服务器的容器中
  1. 利用Ant发布  
  2. 利用Jenkins发布到对应容器中,无论是远程、还是本地

备注:此处admin用户,需要具备manager-gui,manager-script,manager-jmx,manager-status权限,否则报错,用户在D:\apache-tomcat-8.0.43\conf 下tomcat-user.xml下配置,新增以下用户

  <role rolename="manager-script" />
<user username="admin" password="nimda" roles="manager-script"/>     

3. build 构建项目查看结果

Ant + Jenkies +Tomcat 自动构建部署Web项目的更多相关文章

  1. Tomcat—怎样在Tomcat Webserver下部署Web项目

            总结一下怎样在Tomcat Webserver下部署Web项目:

  2. Tomcat在IDEA部署Web项目

    Tomcat在IDEA上部署Web项目: 一.新建Maven-Web项目: 1.新建项目,选择Maven,从模板中创建,选中web-app 2.选择项目地址: 3.选择配置的maven(如果按我之前写 ...

  3. Docker安装Tomcat镜像并部署web项目

    一.安装Tomcat 1.查找Docker Hub上的tomcat镜像 docker search tomcat 2.拉取官方的镜像 docker pull tomcat 等待下载完毕,需要一些时间. ...

  4. eclipse+maven远程(自动)部署web项目到tomcat

    [转自] http://blog.csdn.net/dhmpgt/article/details/11197995 eclipse集成maven后可以用maven命令把web项目自动部署到tomcat ...

  5. Tomcat手动部署Web项目详细步骤

    阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...

  6. Maven实现项目构建直接部署Web项目到Tomcat

    Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...

  7. Jenkins进阶-部署Web项目到远程tomcat(7)

    之前讲到的是如何构建一个项目,并且将代码进行编译.打包,那么打包完成最后的结果就需要发布到应用服务器,将项目部署成功.在之前的项目中我们采用的shell脚本来部署,下面讲解通过Jenkins部署web ...

  8. Jenkins部署Web项目到远程tomcat(通过jenkins插件)

    之前讲到的是如何构建一个项目,并且将代码进行编译.打包,那么打包完成最后的结果就需要发布到应用服务器,将项目部署成功.在之前的项目中我们采用的shell脚本来部署,下面讲解通过Jenkins部署web ...

  9. 开发过程使用Tomcat Maven插件持续快捷部署Web项目

    我在平时工作中部署Web项目到测试服务器上的Tomcat时用的是Hudson.Hudson本身已经跟SVN.Git.Maven集成并且支持添加各种插件.但如果使用Hudson,我需要配置两个任务:一个 ...

随机推荐

  1. MySQL之字符集-校对规则

    一.字符集(Character set) 是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类较多,每个字符集包含的字符个数不同. 特点: ①字符编码方式是用一个或多个字节表示字符 ...

  2. 从零到实现Shiro中Authorization和Authentication的缓存

    本文大纲 一.简介 二.缓存的概念 三.自定义实现缓存机制 四.什么是Ehcache 五.Ehcache怎么用 六.Spring对缓存的支持 七.Spring+Ehcache实现 八.Spring+S ...

  3. Java设计模式:工厂模式

    问题提出 Java的工厂模式与现实生活中的工厂的模型是很相似的.工厂是用来做什么?当然是用来生成产品.因此在Java的工厂模式的关键点就是如何描述好产品和工厂这2个角色之间的关系. 下面来仔细描述一下 ...

  4. 秒懂JS对象、构造器函数和原型对象之间的关系

    学习JS的过程中,想要掌握面向对象的程序设计风格,对象模型(原型和继承)是其中的重点和难点,拜读了各类经典书籍和各位前辈的技术文章,感觉都太过高深,花费了不少时间才搞明白(个人智商是硬伤/(ㄒoㄒ)/ ...

  5. Linux - 进程调度算法

    进程调度: 无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数.这将导致它们互相争夺处理机.另外,系统进程也同样需要使用处理机. 这就要求进程调度程序按一定的策略,动态地把处理机分配给处于 ...

  6. Python 一行代码

    Python语法十分便捷,通过几个简单例子了解其趣味 1.Fizz.Buzz问题为: 打印数字1到100, 3的倍数打印"Fizz", 5的倍数打印"Buzz" ...

  7. MySQL中binlog参数:binlog_rows_query_log_events

    在使用RBR也就是行格式的时候,去解析binlog,需要逆向才能分析出对应的原始SQL是什么,而且,里面对应的是每一条具体行变更的内容.当然,你可以开启general log,但如果我们需要的只是记录 ...

  8. JavaScript获取html元素的实际宽度和高度

    一.JavaScript获取html元素宽高 1.宽高都写在样式表里,就比如#div1{width:120px;}.这中情况通过#div1.style.width拿不到宽度,而通过#div1.offs ...

  9. 物理提取大绝招”Advanced ADB”???

    近来手机取证有个极为重大的突破,是由手机取证大厂Cellebrite所率先发表的"Advanced ADB" 物理提取方法,此功能已纳入其取证设备产品UFED 6.1之中. 这个所 ...

  10. office web apps 部署-搭建域控服务器

    开始第一条先说注意事项:我所配置的环境是用了三台2012server虚拟机,三台虚拟机必须要加下域控,而且登录操作的时候必须以域账号登录,否则测试不通过!在笔记本上搭建了两个虚拟机(window se ...