最近一直想写一个关于 Jenkins 管理的 InelliJ 插件,但是尝试很多次总是在登录认证上面失败,各种办法都不起作用,而且官方的文档含糊不清,就动起了从源代码编译在开发环境中进行调试。

废话少说,下面开始说明 Jenkins 的编译过程。

环境准备

  1. 首先,JDK 环境是必须的了,而且要设置好 JAVA_HOME 环境变量,因为 Maven 会使用到,我这里使用的是最新的 Java 8 1.8.0_112。
  2. 然后需要的就是 Maven 了,我这里使用的是 3.3.9
  3. 由于要使用 Git 来 checkout 源代码,需要使用合适的 Git 客户端,我这里使用的是 macbook 上自带的 Git 命令
  4. 开发环境我使用的是开源版本的 IntelliJ,这个 IDE 使用起来感觉要比 eclipse 更加顺手一些

Checkout Jenkins 源代码

Jenkins 的源代码在 GitHub 上面可以直接找到,链接为 https://github.com/jenkinsci/jenkins。在克隆源代码的时候建议使用 HTTPS 协议,SSH 可能会和你本地的 SSH 秘钥发生冲突。代码克隆命令如下:

git clone https://github.com/jenkinsci/jenkins.git

配置 Maven

由于 Jenkins 使用了修改过的 Jetty Maven 插件,而且还有其他插件的依赖库都不是在 central repository 上管理,所以需要先修改默认的 settings.xml。个人强烈建议修改用户目录下面的那个 settings.xml 文件,而不要去直接修改安装目录下面的配置文件。具体如下

  1. 到用户根目录,打开 .m2 目录,如果没有,请手工新建一个 .m2 文件夹
  2. 找到 settings.xml( ~/.m2/settings.xml )。如果没有这个文件,从  $M2_HOME/conf/settings.xml  复制一份过来
  3. 插入如下配置内容,当然要留意保证 xml 本身结构不会被破坏
  4. <settings>
    <pluginGroups>
    <pluginGroup>org.jenkins-ci.tools</pluginGroup>
    </pluginGroups> <profiles>
    <!-- Give access to Jenkins plugins -->
    <profile>
    <id>jenkins</id>
    <activation>
    <activeByDefault>true</activeByDefault> <!-- change this to false, if you don't like to have it on per default -->
    </activation>
    <repositories>
    <repository>
    <id>repo.jenkins-ci.org</id>
    <url>https://repo.jenkins-ci.org/public/</url>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>repo.jenkins-ci.org</id>
    <url>https://repo.jenkins-ci.org/public/</url>
    </pluginRepository>
    </pluginRepositories>
    </profile>
    </profiles>
    <mirrors>
    <mirror>
    <id>repo.jenkins-ci.org</id>
    <url>https://repo.jenkins-ci.org/public/</url>
    <mirrorOf>m.g.o-public</mirrorOf>
    </mirror>
    </mirrors>
    </settings>
  5. 保存刚才的修改

编译 Jenkins

在命令行终端界面,切换到 Jenkins 源代码所在目录,然后执行以下 maven 命令

mvn -Plight-test install

如果 maven 配置正确并确保网络访问,以上命令就可以编译自己所需要的版本的 jenkins. 如果要编译特定版本的 Jenkins,也可以在克隆完成之后,使用 Git  checkout 命令切换到特定的分支(branch)或者标签。

参考资料:

Jenkins 源代码编译的更多相关文章

  1. 使用Jenkins自动编译 .net 项目

    使用Jenkins自动编译我的.net 项目   1.Jenkins是什么? Jenkins是一个可扩展的持续集成的引擎,主要用于持续自动的构建.测试软件项目 监控一些定时执行的任务.   2.安装配 ...

  2. 源代码编译安装Python3.5.2

    由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...

  3. Android 6.0 源代码编译实践

    http://www.judymax.com/archives/1087 Android 6.0 源代码编译实践 https://mirrors.tuna.tsinghua.edu.cn/help/A ...

  4. Nginx+Php-fpm+MySQL+Redis源代码编译安装指南

    说明:本教程主要包括以下三个部分: 1. 源代码编译安装Nginx 2. 源代码编译安装php以及mysql.redis扩展模块 3. 配置虚拟主机 文中所涉及安装包程序均提供下载链接,欢迎使用 运行 ...

  5. 3DSlicer源代码编译过程vs2008+windows xp [转]

    一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...

  6. 官方发布的新版本Qt已经不支持XP了,要自己从源代码编译

    官方发布的新版本Qt已经不支持XP了,要自己从源代码编译,编译选项里有个-target项,用来提供XP支持的,编译时加上-target xp就可以了 http://www.qtcn.org/bbs/r ...

  7. Ubuntu通过源代码编译安装Octave 4.0

    本教程/笔记,意在指导在Ubuntu及其它Linux系统上怎样通过源代码安装Octave. Octave简单介绍 Octave是GNU旗下取代matlab的数学工具软件,语法与matlab高度兼容.而 ...

  8. Storm-0.9.2-incubating源代码编译打包

    近期遇到一些同学询问Storm-0.9.2-incubating源代码编译打包的问题,现将编译步骤说明例如以下: 1.凝视掉project各pom文件里关于maven插件(maven-gpg-plug ...

  9. 源代码编译安装 PHP5.5.0,解决curl_exec訪问HTTPS返回502错误的问题

    近期碰到一个奇怪的问题. PHP使用 curl_exec 訪问 HTTPS 网页时, 返回502错误, 訪问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看. 支持op ...

随机推荐

  1. CodeForces 518B Tanya and Postcard (题意,水题)

    题意:给定两个字符串,然后从第二个中找和第一个相同的,如果大小写相同,那么就是YAY,如果大小写不同,那就是WHOOPS.YAY要尽量多,其次WHOOPS也要尽量多. 析:这个题并不难,难在读题懂题意 ...

  2. 匹配yyyy-mm-dd日期格式的的正则表达式[转]

    转http://www.jb51.net/article/28034.htm 今天头让我修改个javascript方法,验证输入的日期是否符合要求.恩.我们的要求是yyyy-mm-dd这样的格式,其他 ...

  3. VC++中MessageBox的常见用法详解

    消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.         1.MessageBox("这是一个最简单的消息框!");        ...

  4. java并发编程实战:第十二章---并发程序的测试

    并发程序中潜在错误的发生并不具有确定性,而是随机的. 安全性测试:通常会采用测试不变性条件的形式,即判断某个类的行为是否与其规范保持一致 活跃性测试:进展测试和无进展测试两方面,这些都是很难量化的(性 ...

  5. scala中Nil用法

    http://www.runoob.com/scala/scala-lists.html 即Nil是空List 双冒号是追加进入 package com.yjsj.spark object scala ...

  6. session喜欢丢值且占内存,Cookis不安全,用什么可以代替呢?

    localstorage sessionstorage 在线资料 webdb 这些都是基于HTML5的新特性! 此外还可以使用服务器文件.DB等.

  7. 关于My Sql update语句不能用子查询的解决办法

    在使用My Sql数据库语法操作update时,第一时间想到的是一下写法: UPDATE purchase_request_detail SET convert_to_voucher_id=, con ...

  8. Bootstrap框架常用总结

    Bootstrap框架常用标签:    标题标签:<h1>-<h6>        bootstrap中也设置的相同的样式  - 若要使用 必须使用空标签来定义 比如<s ...

  9. Jzoj 初中2249 蒸发学水(并查集)

    题目描述 众所周知,TerryHu 是一位大佬,他平时最喜欢做的事就是蒸发学水. 机房的位置一共有n 行m 列,一开始每个位置都有一滴学水,TerryHu 决定在每一个时刻选择 一滴学水进行蒸发,直到 ...

  10. Docker的安装与启动教程

    一.安装Docker Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的.在很多版本的CentOS中是 ...