前言

当你使用nginx实现了负载均衡,当你有了超过3台以上的应用服务器时,一个特别头疼的问题就来了,发布项目好麻烦。

你每次都要在本地编译打包一遍,然后手动复制到每一台服务器上面去,如果只有一两台服务,那么确实还不算麻烦,但是当你有了一定数量的服务,你就会发现,发布一遍项目,一个小时过去了。然后你即使改动一个小的地方,所有的必须又重新发布一遍,最后在发布项目上面浪费的时间都足够你睡一觉了。

所以这里就要让你们知道,如何使用第三方的一些软件来帮你完成这些麻烦的问题。(我知道有技术的人都是随便自己写个脚本就完成了,那你大可不必往下看咯)

需要的软件以及环境

Jenkins管理软件,帮你自动构建和发布项目(这是必须的)

以下的软件和环境并非必须,可以根据自己的情况做出调整,我只是列出我用到的

Ant编译打包软件

myeclipes

SVN或者GIT

tomcat项目容器

说明和大致流程

因为开发的环境软件大家都不相同,所以我会讲两种不同的方式,第一种大多数都试用,第二种比较需要环境。

第一种方式需要:Jenkins、然后需要你会打包你的项目成为war,无论用什么方式都可以,这样就够了。流程大致就是,你把你的war拷贝到jenkins的工作空间,然后配置,发布即可。

第二种方式需要:Jenkins、Ant、SVN或者Git。大致流程是,在Jenkins里面配置svn的项目路径,然后配置ant的build。xml,然后构建的时候,Jenkins会从svn或者git把你的项目下载下来,然后使用ant打包编译,然后发布到tomcat。

相比来说,第二种方式就是自动的帮你编译打包了,第一种就是手动打包了。

Jenkins的安装和配置

下载你需要的版本:https://jenkins.io/index.html

安装之前请保证8080端口不要被占用

windos的安装直接解压双击,linux安装需要命令java -jar jenkins.war

安装完成之后使用http://localhost:8080/就可以访问了

然后会让你安装一些默认需要的插件,然后配置用户名等,这里就不多说了,很简单。

进去之后首先干一件事,修改端口号,因为我知道很多人用tomcat用的就是8080,所以这里我修改成8090

进入jenkins的安装目录,然后修改jenkins.xml里面的8080为8090,然后重启

http://localhost:8080/reload然后点一下就可以了。

jenkins的其他启动关闭命令请参考:http://www.jb51.net/article/98554.htm

安装插件:

搜索插件Deploy Plugin然后安装

到此基本配置已经完成,你可以大致浏览一下,习惯操作之后进行下面的项目配置

tomcat配置

因为需要自动发布,所以需要拿到tomcat的一些权限,需要你创建一个tomcat的用户用于管理tomcat。

在tomcat的conf目录中配置tomcat-users.xml文件

在<tomcat-users>

节点里添加如下内容:

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user username="username" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

引号里的username和password修改为你想要的,然后记住它

在Jenkins配置你的项目

然后新建项目

填入名称选择自由风格

然后他会让你配置各种,前面你都不看,直接走到最后的增加构建后的操作步骤

WAR/EAR files里面写你war包的名字.war

Containers选择tomcat(亲测tomcat8可以选择tomcat7.x)

Manager user name和Manager password就是你刚才记住的帐号密码

Tomcat URL为你tomcat访问的url跟路径

然后保存即可

第一次我们先创建我们的工作空间,不需要复制war

点击立即构建,然后肯定是失败的,因为我们还没有复制war,我们只是让他创建个工作空间的目录

我们来到jenkins的安装目录,然后进入workspace找到你刚才取的名字的目录

这就是你的工作空间,接下来把你的war(myeclipes可以直接右键export导出war),复制到这个目录下即可。

然后再次点击立即构建,这次就是真的构建了,然后如果没有问题,那么就会发布到你的tomcat(你的tomcat必须提前打开哦!)

如果出现任何问题,点击

然后

里面会看到控制台输出的信息,你可以根据输出的信息找到你出现的问题,然后解决即可。

至此第一种方法已经完成,如果有多台服务器也不用我多说了,直接在

后面加就行了。

实现自动下载项目和打包编译

Repository URL为你SVN的地址,使用GIt的选择上面那个

Credentials是你svn的帐号密码点击add可以新增,如:

请确定你的路径是对的。然后配置构建

点击完成之后就可以了,不用写别的什么

修改war的路径为

保存。

这样jenkins就配置完成了,然后请在你的本地安装ant。

下载ant(如果你是第一次使用ant,注意本地jdk的版本,需要下载与你jdk版本对应的ant,否则安装会失败

然后配置ant的环境变量,使用ant -version命令查看是否安装成功,安装比较简单(解压,配置环境变量就可以了),这里就不多说了。

如果你使用的是myeclipes,那么比较简单,下面跟我操作:右键导出

选择你的项目前面打勾然后finish

然后在你的项目根目录下面会生成一个

双击打开,修改三个地方:

1、<project basedir="." default="war" name="">

2、在<target name="init">后面修改成如下的样子

<target name="init">
        <mkdir dir="WebRoot/WEB-INF/classes"/>
        <copy includeemptydirs="false" todir="WebRoot/WEB-INF/classes">
            <fileset dir="src">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>上面这些不动,下面是要加的

                 
    <target name="war" depends="build-project">  
       <mkdir dir="target"/> 
       <war destfile="target/你的项目名称.war" webxml="WebRoot/WEB-INF/web.xml">  
           <fileset dir="WebRoot"/>  
           <lib dir="WebRoot/WEB-INF/lib"/>  
       </war>  
      </target>

3、加入<compilerarg line="-encoding UTF-8 "/>具体位置如下

<javac debug="true" debuglevel="${debuglevel}" destdir="WebRoot/WEB-INF/classes" includeantruntime="false" source="${source}" target="${target}">
            <compilerarg line="-encoding UTF-8 "/>
            <src path="src"/>
            <classpath refid="tzlhxc.classpath"/>
        </javac>

配置完成,我们先验证一下,右键build.xml然后runas然后选择ant build

如果过一会控制台出现BUILD SUCCESSFUL则成功了。

把build.xml提交svn或者git,然后确定项目所有你需要的东西都已经提交。

最后我们点击立即构建,jekins就会从你的svn上下载你的项目到工作空间,然后ant进行编译打包,最后将war包上传到tomcat然后发布,整个过程一气呵成,如果有问题继续看控制台报错解决即可。

至此所有的配置已经完成。

总结

对于jenkins本身来说还有很多的功能,有兴趣的朋友可以继续研究,比如监控,还有检测到svn修改就发布等功能。

如果你项目本身是maven的项目也有具体的配置方式这里就不多说了。

总之过程是差不多的,这里也只是抛砖引玉,你需要根据你的实际项目环境来选择合适的配置。

总之,有了这样的软件发布项目确实很方便,只要你第一次配置好了,以后你只要提交到svn或者git,然后直接点击立即构建你的所有事情都解决了。

然后提出需要注意的点:ant的配置文件可以根据具体的需求自行修改和配置。tomcat的编码最好设置成utf-8。tomcat的虚拟机内存需要足够大,否则项目大的时候发布时间很慢。对于jenkins来说可以布置在任何一台别的服务器上面,不需要一定布置在本机,这样的话可以实现远程24小时管理,因为自己的电脑不一定24小时开机的。

参考文档:http://files.cnblogs.com/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf这个是详细的jenkins的配置和解释。

http://www.cnblogs.com/smail-bao/p/6019417.html 使用maven的参考

http://www.jb51.net/article/98554.htm jenkins的启动关闭方法

http://jingyan.baidu.com/article/90808022c5eed8fd91c80f90.html  ant的安装和配置

https://www.tutorialspoint.com/ant/ant_environment.htm ant的官网

http://blog.csdn.net/wangyajin333/article/details/47860577整体参考

转载请注明出处:http://www.cnblogs.com/linkstar/p/6530451.html

作者:LinkinStar

实现自动构建编译javaweb项目并发布到N台服务器的更多相关文章

  1. Ant + Jenkies +Tomcat 自动构建部署Web项目

    前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...

  2. Jenkins 通过 maven 构建编译 JAVA 项目环境

    Jenkins 通过maven 构建编译 JAVA 项目环境 官网下载合适Jenkins版本包: 1.jenkins http://mirrors.jenkins.io/war-stable/ 2.J ...

  3. 跨平台自动构建工具v1.0.2 发布

    XMake是一个跨平台自动构建工具,支持在各种主流平台上构建项目,类似cmake.automake.premake,但是更加的方便易用,工程描述语法更简洁直观,支持平台更多,并且集创建.配置.编译.打 ...

  4. 使用IDEA创建基于Gradle构建的JavaWeb项目

    环境配置 jdk: 1.8 Gradle: 4.4.1 Tomcat: 9.0.0 One Step! 创建项目,初始化项目结构. 打开我们的IDEA,进入创建项目的界面,勾选Java,Web两个选项 ...

  5. mvc项目远程发布到windows server服务器

    1.安装IIS的时候需要将这两个选项勾选起来 2.确保 管理服务委派 这个选项存在 3.添加委派规则 4.配置IIS管理用户,后续需要用这个用户进行发布连接 5.配置站点的IIS权限 选择刚才在前面设 ...

  6. Jenkins自动化构建vue项目然后发布到远程Linux服务器

    部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...

  7. jenkins 通过批处理自动构建 非标准项目

    之前介绍了java和vs2010的项目构建,这些都是比较常见的,所以都用专门的工具.但但难免会遇到一些不常见的项目,下面介绍通过批处理进行构建,并用jenkins调用.我们这里使用plc语言,没有标准 ...

  8. javaweb项目中发布webservices服务

    1.新建一个项目动态web项目Axis2Server. 2.解压缩下载的axis2-1.7.4-war.zip文件--〉axis2-1.7.4-war--〉axis2.war--〉axis2,找到WE ...

  9. 使用maven命令终端构建一个web项目及发布该项目

    构建环境: maven版本:3.3.9 系统平台:Windows7 x64 JDK版本:1.7 构建步骤: 1.打开maven安装目录,在地址栏输入cmd进入命令窗口 2.输入命令mvn archet ...

随机推荐

  1. 用Linux命令行获取本机外网IP地址

    引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下 ...

  2. HDU-2058-The sum problem(数学题技巧型)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2058 思路: 这题的n,m都很大,很显然直接暴力,会超时,那就不能全部都找了,利用等差数列求和公式, ...

  3. jQuery表单对象属性过滤选择器

    jQuery表单对象属性过滤选择器 <div id="p1" attr="p1"> <input type="text" ...

  4. jQuery选择器,用逗号分隔的时候需要注意范围问题

    jQuery选择器,用逗号分隔的时候需要注意范围问题: <%@ page language="java" import="java.util.*" pag ...

  5. jQuery的each函数

    http://www.cnblogs.com/xiaojinhe2/archive/2011/10/12/2208740.html http://www.cnblogs.com/mabelstyle/ ...

  6. 抓包分析YY音频

    YY的音频数据传输是P2P协议,音频的编码为AAC,下面抓去的音频编码的信息和频谱信息. 音频编码为AAC,采样为44K,码率24kb/s.音频编码在24kb/s码率能达到15K的音质.值得大家学习啊 ...

  7. removeEventListener('2016');

    2016----最后一天工作日要快结束了,趁剩下的一点时间写篇博客玩玩,想到啥就写啥.总结下来就一句---累并快乐着... 先祝大家新年快乐!万事如意发大财. 一年跳了三家公司,上半年在家小公司干着整 ...

  8. js原生轮播图

    轮播图是新手学前端的必经之路! 直接上代码! <!DOCTYPE html><html lang="en"><head> <meta ch ...

  9. <C++Primer>第四版 阅读笔记 第一部分 “基本语言”

    之前阅读时没有及时总结,现在慢慢补上. 第1章 快速入门 main 函数在很多方面都比较特别,其中最重要的是每个C++程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显示调用的函数 ...

  10. Java数据类型转换浅析

    Java数据类型转换分为两种:自动类型转换和强制类型转换. 数据类型转换的关键是数据类型相应的表数范围大小 1.自动类型转换: 概念:小范围数据类型会自动转化成大范围数据类型 实例: int a=10 ...