Rainbond源碼構建JAVA項目選取JDK

默認提供的JDK

Rainbond官方提供了多個版本的OpenJDK供用戶使用。這些OpenJDK的安裝包託管於好雨科技官方的OSS(對象存儲)中。可以接入互聯網的Rainbond平臺,能夠經過rbd-repo組件的代理獲取這些資源,而不用人工干預。java

用戶經過WEB界面配置,或在源碼根目錄建立system.properties,設定java.runtime.version來指定OpenJDK版本。node

WEB界面設置的值優先級高於system.properties中設定的值。linux

  • WEB界面指定:

  • system.properties指定方式:
# system.properties 目前Rainbond能識別的版本值爲11,10,1.9,1.8,1.7,1.6
java.runtime.version=1.8

在不作出其餘任何調整的狀況下,在Rainbond執行源碼構建時,會獲取如下版本的OpenJDK資源:ios

OpenJDK版本 資源地址
1.8(默認) http://lang.goodrain.me/jdk/cedar-14/openjdk1.8.0_201.tar.gz
1.6 http://lang.goodrain.me/jdk/openjdk1.6.0_27.tar.gz
1.7 http://lang.goodrain.me/jdk/cedar-14/openjdk1.7.0_201.tar.gz
1.9 http://lang.goodrain.me/jdk/cedar-14/openjdk9.0.4.tar.gz
10 http://lang.goodrain.me/jdk/cedar-14/openjdk10.0.2.tar.gz
11 http://lang.goodrain.me/jdk/cedar-14/openjdk11.0.2.tar.gz

特別提醒:若是maven編譯過程當中發生錯誤,請自行下載對應的JDK到本身的環境中,嘗試本地構建,來確認是否因爲OpenJDK版本問題致使了編譯失敗。docker

自定義JDK

多數用戶但願可以自定義JDK,好比但願使用特定版本的OpenJDK,或者具有Oracle的受權使用OracleJDK。接下來就會講解如何自定義。緩存

Rainbond平臺集成了 Jforg出品的 Artifactory 做爲製品庫(即rbd-repo組件)。在這裏咱們能夠上傳並存儲本身的資源,包括jdk包。bash

  • 首先,訪問 http://<管理節點IP>:8081 登陸 Artifactory,默認憑證: admin/password

  • 建立自定義的本地製品倉庫,並上傳自定義的jdk包。

須要注意的是,Artifactory 上傳文件的默認限制是不能超過 100MB。若是上傳的文件超過了這個限制,能夠在 Admin > General Configuration 頁面中設置 File Upload Max Size 項爲一個合適的值。maven

  • 在平臺WEB界面指定自定義JDK地址,設置處爲應用構建源。

像上述方式上傳的jdk包,其地址爲: http://<管理節點IP>:8081/artifactory/<自定義倉庫名>/<文件名>ui

相似: http://192.168.1.1:8081/artifactory/jdk2/jdk-8u201-linux-x64.tar.gz代理

至此,自定義JDK就完成了。

替換默認JDK

自定義JDK自由度更高,能適應更多的使用場景。可是其短板在於JDK獲取地址在每個新建的應用中都要設置一遍。有沒有方式,能夠替換Rainbond默認提供的JDK包呢?若是能夠實現這個功能,那麼每次構建都不用作其餘設置,使用默認路徑,便可安裝公司內部指定版本的JDK,豈不是很方便?

默認JDK的地址,實際上指向了Rainbond官方的對象存儲,這對於Artifactory而言,屬於一種遠程倉庫(remote repository)。在Artifactory中,是沒有辦法經過上傳文件,來替換遠程倉庫中的文件的。因此,咱們要在本地創建另外一個倉庫,來替換Rainbond官方提供的遠程倉庫。

接下來是詳細的步驟:

  • 用Rainbond官方提供的 rbd-java-buildpack 鏡像做爲基礎,結合自需JDK包製做鏡像(以默認的1.8版本爲例)
#構建目錄的文件結構以下:
.
├── Dockerfile
└── jdk-8u201-linux-x64.tar.gz #這裏使用OracleJDK1.8 爲例替換,用戶根據本身需求自行更改

Dockerfile內容:

FROM rainbond/buildpack:java-v5.1.5
COPY jdk-8u201-linux-x64.tar.gz /pkg/lang/jdk/cedar-14/openjdk1.8.0_201.tar.gz

構建操做:

docker build -t goodrain.me/buildpack:java-v5.1.5 .
  • 啓動服務

在管理節點編輯指定配置文件:

#vi /opt/rainbond/conf/base.yaml
#在末尾追加
- name: rbd-java-buildpack
  endpoints:
  - name: BUILDPACK_ENDPOINTS
    protocol:
    port: 2017
  health:
    name: rbd-java-buildpack
    model: http
    address: 127.0.0.1:2017/lang/
    max_errors_num: 3
    time_interval: 30
  after:
    - docker
  type: simple
  pre_start: docker rm rbd-java-buildpack
  start: >-
    docker run --name rbd-java-buildpack
    --network host
    -i goodrain.me/buildpack:java-v5.1.5
  stop: docker stop rbd-java-buildpack
  restart_policy: always

啓動服務:

node service update
  • 修改Artifactory中的遠程倉庫pkg_lang 的遠程地址爲 http://<管理節點IP>:2017/lang

若是已經用Rainbond官方遠程倉庫獲取過JDK包,那麼要在 pkg_lang-cache中清除已緩存的記錄。

至此,就已經將默認的OpenJDK1.8版本,替換成爲指定的 OracleJDK1.8版本了。

總結

基於這篇文章,用戶已經能夠靈活掌握配置使用各類JDK的方式了。

在這篇文章以後,咱們會繼續發佈如何靈活配置Maven環境的文章,敬請期待。

相關文章
相關標籤/搜索