共計 1553 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇文章給大家分享的是有關如何用源碼分析 Release,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
release 的入口是 bin/release,同樣需要一個構建目錄實例化 buildpack 對象,并調用其 release 接口 buildpack#release 方法
代碼的基本結構和 compile 很相似,探測各個組件是否支持,然后調用各個組件的 release 方法。release 的入口是 bin/release。
Ruby 代碼
def release
container = component_detection(container , @containers, true).first
fail No container can run this application unless container
component_detection(JRE , @jres, true).first.release
component_detection(framework , @frameworks, false).each(:release)
command = container.release
payload = {
addons = [],
config_vars = {},
default_process_types = { web = command }
}.to_yaml
@logger .debug { Release Payload:\n#{payload} }
payload
end
JRE 的 release 方法
JRE 組件實例化的實際是 OpenJdkJRE 的實例,而 OpenJdkJRE 又繼承自 OpenJDKLike,release 方法就在 OpenJDKLike 類中
Ruby 代碼
def release
@droplet.java_opts
.add_system_property(java.io.tmpdir , $TMPDIR)
.add_option(-XX:OnOutOfMemoryError , killjava)
.concat memory
end
從這里可以看出 release 方法返回的是運行時參數。
JRE 的有:JDK 的臨時目錄,內存溢出后的執行的腳本,以及內存限制的參數
Tomcat 的 release 方法
調用依然是個子項目的 release 方法
Ruby 代碼
def release
@sub_components.map(:release)
command
end
TomcatInstance 的 release 方法
什么都沒做
Ruby 代碼
def release
end
TomcatLifecycleSupport,TomcatLifecycleSupport 的 release 方法也都沒做什么
TomcatAccessLoggingSupport 的 release 方法
Ruby 代碼
def release
@droplet.java_opts.add_system_property access.logging.enabled , @configuration[KEY_ENABLED] == enabled
end
添加了運行時參數:
access.logging.enabled 和 access_logging enabled
總結
從源代碼來看,release 方法是獲取個組件的運行時參數。
以上就是如何用源碼分析 Release,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。