主题

  以前自己做些小玩意儿比如博客(http://blogv3.labofjet.com/)的时候,在远程服务器上的tomcat发布工程用的是目录的结构,而不是war.原因很简单.用目录结构的话每次只需要把修改的.class文件,.jsp文件等文件覆盖原本的文件即可.而如果是war的话就无比蛋疼,每次都要重新整个war覆盖,而且打包比较麻烦.

  对于我自己玩玩的项目当然没问题.但是如果一次修改了多个文件,那一个个找出来覆盖tomcat上旧的文件也是一件很让人火大的事情.

  公司项目打包用的是jenkins.虽然一般是测试打包,但是我也偷偷手贱点过几次(哈哈)..觉得还是蛮好用的,确实减少了不少工作量,而且不容易出错.所以有空的时候我也学习了下jenkins打包.并记录下学习过程与心得.

安装

其实安装没啥好记录的....学计算机的就算不看教程应该也都会吧..简单分享下..没啥技术含量...= =

我在jenkins的官网上发现了不同操作系统的安装包.但是我觉得最简单的还是war包的那种方式,因为只要装了java就可以跨平台了.而且我肯定会装java.所以我就下载了这个版本的jenkins.

然后我设置了一下环境变量.

不设置也没关系的.会有个默认安装地址.

然后把war丢到tomcat里启动tomcat就行(其实不用tomcat,直接java -jar jenkins.war也可以的).

然后访问http://localhost:8080/jenkins 会跳转并让你输入一个字符串证明你有操作权限

然后就让你装插件...其实也没啥好装的...自带的就够了....我额外装了一个publish over ssh和ssh plugin..因为以后可能要远程部署项目(好令人激动).

再然后就新建1个用户作为admin.

然后进入 系统管理 -> 插件管理 去安装一下maven的插件,因为我的项目都是用maven的.所以要装这个插件.

装好maven插件以后还需要在 系统管理 -> Global Tool Configuration里设置一下mave的安装地址

打包项目

安装好jenkins以后就可以打包了.新建一个job.选择maven项目.

选择代码仓库地址

我代码是用git托管在oschina上的.所以仓库地址写oschina的git的地址

配置完地址URL以后就提示我没权限.

那我们就在Credentials里配置一下.有很多种认证方式.可能用户名和密码是最简单的.但是我因为以前把本机的SSH private key在oschina上添加过...所以我这里就采用这种方式了.

build

即使不配置其他选项,用默认的参数取打包应该也能成功.但是有个很蛋疼的地方就是maven install的时候会去执行各种test.

执行test比较费时,而且打包的时候并不需要jenkins去做test.平时我们自己会去做的.所以我们需要关闭test

那我们就百度一下怎么跳过test的关节好了.(其实jenkins在这里特别提示了一下怎么配置参数.例子就是跳过maven的test)

然后就可以打包了.

注意事项:

我一开始打包各种失败.查看了控制台发现错误都是GBK不可映射字符.

解决办法有2个:

第一种是在pom里添加

    <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

但是打包还是会有提示说构建用的字符集是依赖于系统的.

第二种是在pom里添加

    <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

就没问题了.

打包多个项目

打包多个项目的时候会有个有趣的现象.

比如有2个项目service和web.都作为job在jenkins里.

当你打包service的时候会等service打完会自动去打包web.

原因是web是依赖于service的.所以当service更新的时候要去更新web.

这也解释了下maven为什么要拆分多个模块...一个原因就是打包的时候如果我只打包web.那依赖的service这个jar包可以直接复制到lib目录下而不用重新编译service.打包速度会快许多.

小结

根据上面的记录已经可以成功打包了...后面有机会再学习下怎么把包发布到远程的tomcat并重启服务器..都能做到的话就爽歪歪了.

jenkins 学习记录1的更多相关文章

  1. jenkins 学习记录2

    主题 在之前的学习中(http://www.cnblogs.com/abcwt112/p/6274575.html)我已经学会怎么打包了..这篇文章记录分享我学习如何利用jenkins将打完的包发布到 ...

  2. Jenkins学习记录

    参考资料 官方文档 用MSBuild和Jenkins搭建持续集成环境(1) 用MSBuild和Jenkins搭建持续集成环境(2) 构建基于Jenkins + Github的持续集成环境 Jenkin ...

  3. Jenkins 学习笔记

    Jenkins 的内容网站蛮多的,但是一开始我看起来确实很费劲.似乎好多东西都是悬空的,没有把底层的信息交代清楚. 我把自己对于 Jenkins 的探索过程记录下来,如下. 目录 Jenkins 学习 ...

  4. java后端学习记录2019

    学习计划 2019年计划 1.学习计算机基础,并加以实践.包括LeetCode刷题.数据库原理(索引和锁.Sql优化等).网络协议(Http.Tcp).操作系统(加深Linux).<Http权威 ...

  5. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  6. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  7. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  8. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  9. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

随机推荐

  1. python基础之面向对象(二)

    面向对象对程序设计OOD 找对象---->找类(归纳对象相同的特征与技能,还有没和对象独有的特征)面向对象编程OOP 先定义类---->实例化出对象查看成绩,交作业 在python3中,所 ...

  2. Report: Disappearing Wetlands Put Planet Life at Risk

    A new report warns that wetlands are disappearing three times faster than the world’s forests, with ...

  3. H264的编解码流程?

  4. 【英语】Bingo口语笔记(84) - 惊讶的表达

  5. 深入理解java虚拟机-第七章

    第7章 虚拟机类加载机制 类的加载的时机 加载 Loading, 连接 Linking(验证 Verfiication, 准备Preparation, 解析 Resolution) 初始化 Initi ...

  6. 剑指offer-第五章总结

    优化时间和空间效率的方法: 1,时间换空间. 2,动态规划. 3,找规律.

  7. SP104 HIGH - Highways

    vjudge luogu 题意 就是要你求无向图的生成树个数.\(n\le 12\),保证答案不爆\(long long\). sol 矩阵树定理直接上. 如果怕掉精可以写整数意义下的高斯消元,需要辗 ...

  8. 转载论文关于fir滤波器的fpga实现

    摘 要 本文讨论的FIR滤波器因其具有严格的线性相位特性而得到广泛的应用.在工程实践中,往往要求信号处理具有实时性和灵活性,本论文研究FIR的FPGA解决方案正体现了电子系统的微型化和单片化. 本论文 ...

  9. 【POJ 3179】 Corral the Cows

    [题目链接] http://poj.org/problem?id=3179 [算法] 首先,我们发现答案是具有单调性的,也就是说,如果边长为C的正方形可以,那么比边长C大的正方形也可以,因此,可以二分 ...

  10. 十九、python沉淀之路--装饰器

    一.实现装饰器的预备知识 装饰器 = 高阶函数 + 函数嵌套 + 闭包 1.高价函数定义: 1.函数接收的参数是一个函数名    2.函数的返回值是一个函数名    3.满足上述条件任意一个,都可称之 ...