最近一直想写一个关于 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)或者标签。

参考资料:

最新文章

  1. Relax NG 在Odoo中的应用
  2. 【转载】ANSYS有限元分析中的单位问题
  3. 【转】【Asp.Net MVC】asp.net mvc Model验证总结及常用正则表达式
  4. 【USACO 1.3.1】混合牛奶
  5. 【BZOJ1132】【POI2008】Tro 计算几何 叉积求面积
  6. ●洛谷P3688 [ZJOI2017]树状数组
  7. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句
  8. CJSON parse.c
  9. 全景拍摄,全景视频拍摄,全景VR拍摄,VR全景拍摄,360全景图片拍摄
  10. java分布式电子商务云平台b2b b2c o2o需要准备哪些技术??
  11. Ubuntu 16.04安装sogou 拼音输入法
  12. Python cmd中输入&#39;pip&#39; 不是内部或外部命令,也不是可运行的程序或批处理文件。
  13. CentOS7安装MySQL5.7常见问题
  14. Oracle 数据泵详解
  15. jquery.cookie.js中$.cookie() 使用方法
  16. Linux kernel(CVE-2018-17182)提权漏洞复现
  17. iOS开发-iPad侧边栏Tab选项卡切换
  18. wget下载整个网站或特定目录
  19. 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程
  20. bzoj 1811: [Ioi2005]mea 贪心,乱搞

热门文章

  1. 在ceph中:pool、PG、OSD的关系
  2. UVa 1374 Power Calculus (IDA*或都打表)
  3. HBase的FlushLargeStoresPolicy多例族支持
  4. VM参数收集(部分)
  5. [leetcode] 8. Maximum Depth of Binary Tree
  6. 自己写一个图片按钮(XAML)
  7. Eclipse中Tomcat Server启动后马上又自动停止报错Address已经使用8005端口 Can&#39;t assign requested address (Bind failed)
  8. DP刷题
  9. 【OCP|052】OCP最新题库解析系列-2
  10. kvm虚拟化之convirt集中管理平台搭建