主题

  以前自己做些小玩意儿比如博客(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. UI-了解ISO

    1. iOS学习路线: C语言:数据类型.流程控制.函数.指针.字符串.结构体.枚举.预处理: OC:面向对象.内存管理.分类.协议.Block.KVC/KVO.Foundation框架: iOS基础 ...

  2. dubbo-monitor安装、 监控中心 配置过程

    简单介绍下monitor: Simple Monitor挂掉不会影响到Consumer和Provider之间的调用,所以用于生产环境不会有风险. 配置好了之后可以结合admin管理后台使用,可以清晰的 ...

  3. phpcms ——模板标签使用说明

    使用phpcms总是要查询各种标签,实在很烦,只好找个比较全的来备查.因为自己写一个orm来配合调用也没那么容易无缝的嵌入到引擎当中. 获取父分类下面的子分类 {loop subcat(77) $k ...

  4. Spring核心AOP(面向切面编程)总结

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/75208354冷血之心的博客) 1.AOP概念: 面向切面编程,指扩 ...

  5. 演示使用Metasploit入侵Android

    文本演示怎么使用Kali Linux入侵Android手机. Kali Linux IP地址:192.168.0.112:接收连接的端口:443. 同一局域网内android手机一部(android ...

  6. (三十八)js之柯里化

    先给大家介绍什么是柯里化与反柯里化 百度翻译: 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的 ...

  7. Sublimetext3插件与使用技巧

    1.    package control 的安装与注意事项 2.    常用插件的安装与注意事项 3.    主题风格设置 4.    常用快捷键 https://packagecontrol.io ...

  8. 互联网公司面试必问的mysql题目(下)

    这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...

  9. hadoop1.x和2.x的一些主要区别

    当我们安装完毕hadoop2的时候,我们看到为啥没有jobtracker,这是因为hadoop2中已经没有jobtracer了,而是产生了yarn,yarn是什么那,可以看yarn详解,我们为什么已经 ...

  10. Hexo博客网站再配置

    这两天整理网站方面的事,本地IIS部署,个人网站,发现我的hexo做的个人网站实在很单调,于是找来资料做进一步的配置. 一.网站图标 看一下hexo\themes\modernist\layout\_ ...