• Win下Jenkins-2.138源码编译及填坑笔记


    源码编译篇

    1、  安装JDK1.8-181,操作系统添加JDK环境变量。Java -version验证一下。

    注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java9,Maven必须3.5.3以上。

    2、  解压Maven3.5.4到指定目录(英文路径)。操作系统添加Maven环境变量,接着配置Maven的confsetting.xml文件。

    定位到55: 配置本都Maven仓库路径。

        <localRepository>C:jstaosoftsprintbootjar
    epository</localRepository>

    定位到158: 配置远端阿里云仓库。

     <!-- 阿里云仓库 -->
    <mirror>
          <id>alimaven</id>
          <mirrorOf>central</mirrorOf>
          <name>aliyun maven</name>
          <!--<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>-->
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

    3、  解压Jenkins-2.1.38。解压到英文路径下。

    4、  为了显示Jenkins是自己编译和打包的,修改一下源码。

    打开文件warpom.xml,定位到186行,将<finalName>标签内容改为GeoDevOps

     

    5、  以管理员方式调出cmd,进入到Jenkins解压目录。

    以下环境操作需联网(校验和编译需要下载依赖文件)

    5.1执行命令:mvn validate

    第一次校验费点时间,需要耐心等待。

    开始检验Jenkins项目……

    如图所示,校验成功。我是第二次校验,速度比较快。

    5.2 接着,执行命令:mvn clean install -Dmaven.test.skip=true跳过单元测试部分编译。

    如果想要执行单元测试可以使用命令:mvn clean install

    第一次编译费点时间,需要耐心等待。

    开始编译打包Jenkins项目……

    如图所示,编译打包成功。我是第二次校验,速度比较快。

    5.3编译打包后,可以在war arget目录下看到GeoDevOps.war文件。

    6、  启动运行GeoDevOps.war。

    执行命令java -jar GeoDevOps.war

    访问http://localhost:8080

    如图所示,编译打包成功。为老头子换了个头像 - -

     踩坑笔记篇

    1.   用GitHub上最新版本Jenkins(Jenkins-2.139-SNAPSHOT)源码编译,编译途中有些依赖包找不到,最后不得不推倒从来,下载了稳定版本源码Jenkins-2.138。回头看Jenkins-2.139-SNAPSHOT是正在开发的不稳定版本。所以推荐使用稳定的release版本源码编译。

    直接下载下来的不稳定版本是这样的:

    稳定的release版本是这样的:

    2.   官网说JDK需要Java Development Kit (JDK) 8。我当时用的JDK1.8.0-65,以为没问题。但是校验的时候出错了!后面换成JDK1.8-181问题解决。JDK需要jkd1.8.0-101以上。

     

    3.   编译打包时候,提示包依赖无法解决,导致无法编译通过。我到本地库去找,发现没有该jar包。分析可能是阿里云远端maven库,和http://repo.jenkins-ci.org/public/仓库冲突导致。于是,手动下载该jar包和对应.POM文件到本地仓库。问题解决。

    4.   粗心大意,使用电脑原先安装的Maven-3.3.9版本编译导致掉坑。Jenkins-2.138要求Maven版本3.5.3以上。

    5.   再次编译可能遇见问题。

    执行命令:mvn clean install -Dmaven.test.skip=true

    提示war arget目录无法删除,导致编译失败。

    尝试手动删除,依然发现文件被占用,window就是这样,被占用也不告诉你是谁占用。

    检查占用地方,解除占用,再次编译,问题解决。

  • 相关阅读:
    how to design a good api and why it matters
    耦合_wiki
    python图形界面:首选Tkinter
    进程间通信:KPIPE
    记 · 今日冬至 · 除了吃还有思考
    【Nodejs】448- 深入学习 Node.js Buffer
    记 · 七言古诗 · 劝学
    【CSS】447- 纯CSS实现简单骨骼动画
    【JS】446- 你不知道的 map
    【前端知乎】445- File FileList 和 FileReader 对象详解
  • 原文地址:https://www.cnblogs.com/luohanguo/p/9528225.html
Copyright © 2020-2023  润新知