最近又開始使用jenkins了,遇到一個問題,開發本地使用的jdk是1.7,而我們jenkins由於需要對docker的插件的支持必須使用1.8。
這樣就導致了有的開發的代碼在jenkins去代碼庫checkout代碼的時候,有的代碼能被jenkins打包,但是有的代碼拉取下來登錄到jenkins宿主機
能夠使用mvn install打包,但是不能被jenkins打包,出現這個問題主要是mvn使用的是系統的JAVA_HOME變量,如果降低java版本會導致jenkins無法使用
而mvn是不會受到影響,所以要解決這個jdk版本共存問題
過程如下:
1、官網現在一個免安裝版的jdk1.8,解壓到任何目錄,我這里是解壓到/usr/java/
[root@localhost java]# ll
total 8
lrwxrwxrwx. 1 root root 16 Mar 21 09:55 default -> /usr/java/latest
drwxr-xr-x. 8 root root 4096 Mar 21 09:55 jdk1.7.0_55
drwxr-xr-x. 9 root root 4096 Mar 21 09:44 jdk1.8.0_171
lrwxrwxrwx. 1 root root 21 Mar 21 09:55 latest -> /usr/java/jdk1.7.0_55
在profile最后面添加如下:
[root@localhost java]# cat /etc/profile JAVA_HOME=/usr/java/default CLASSPATH=$JAVA_HOME/lib PATH=$PATH:$JAVA_HOME/bin export PATH CLASSPATH JAVA_HOME
重新打開終端可以查看maven版本
主要是這個mvn對JAVA_HOME有要求,因為這個變量寫入了mvn可執行文件中
[root@echqdslavejenkins_ops opt]# /usr/local/maven/bin/mvn --version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_55, vendor: Oracle Corporation
Java home: /usr/java/jdk1.7.0_55/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
這里我使用的jenkins為rpm包。
wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.150.3-1.1.noarch.rpm
[root@localhost opt]# yum localinstall jenkins-2.150.3-1.1.noarch.rpm
[root@echqdslavejenkins_ops opt]# vim /etc/init.d/jenkins candidates=" /usr/java/jdk1.8.0_171/bin/java /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/bin/java "
啟動jenkins就行了
/etc/init.d/jenkins start
