為什麼要建構建構系統?

本頁說明什麼是建構系統、用途、為何應選擇建構系統,以及機構開始擴充時,為什麼編譯器和建構指令碼不是最佳選擇。適合對建構系統沒有經驗經驗的開發人員使用。

什麼是建構系統?

基本上,所有建構系統都有一個直接目的:他們會將工程師編寫的原始碼轉換為機器可以讀取的可執行二進位檔。建構系統不只是人為編寫程式碼他們也能讓機器自動建構版本,無論是用於測試或發布正式版。在有數千名工程師的機構中,大多數建構作業都是自動觸發,而不是由工程師直接觸發。

不能只用編譯器嗎?

建構系統的需求可能並非明顯。多數工程師在學習程式設計時不使用建構系統,大多數都是先從指令列直接叫用 gccjavac 等工具,或者在整合中對等的工具開發環境 (IDE)。只要所有原始碼都位於相同目錄中,即可執行以下指令:

javac *.java

這個指令會指示 Java 編譯器取得目前目錄中的每個 Java 來源檔案,並轉換成二進位類別檔案。在最簡單的情況下,您只需要提供上述資訊即可。

但隨著程式碼展開,資料複雜問題也隨即開始。javac 相當適合查看目前目錄中的子目錄,找到要匯入的程式碼。但無法找出儲存於檔案系統「其他部分」 (可能是數個專案共用的程式庫) 的程式碼。也知道如何建構 Java 程式碼。大型系統通常會使用以各種程式設計語言編寫而成的不同元件,並在這些元件之間具有依附元件,這表示單一語言編譯器可能無法順利建構整個系統。

處理多種語言或多個編譯單元的程式碼後,建構程式碼就不需要再進行單一步驟。現在,您必須評估程式碼仰賴哪些元素,並以適當的順序建構這些部分,且每組工具可能會使用不同的工具。如有任何依附元件發生變化,您必須重複這道程序,以免因過時的二進位檔而受到影響。針對平均管理大小的程式碼集,這個程序快速且變得容易出錯。

此外,編譯器也無從得知如何處理外部依附元件 (例如 Java 的第三方 JAR 檔案)。如果沒有建構系統,您只要從網際網路下載依附元件,並將其固定在硬碟的 lib 資料夾中,然後設定編譯器讀取該目錄的程式庫,就可以管理建構作業。的 Google Ads 新帳戶重新申請驗證。隨著時間改變,要維護這些外部依附元件的更新、版本和來源並不容易。

殼層指令碼會有什麼影響?

假設您的興趣是一開始可以輕鬆編譯,只需使用編譯器就能建構,但您一開始已經開始解決一些問題。或許您還沒有想到有營造系統的需求,可以使用一些簡單的殼層指令碼,根據正確的順序建構建築物,讓繁瑣的零件自動化。這有助於解決這個問題,但不久之後,您就可以開始使用更多問題:

  • 變成很繁瑣。隨著系統的複雜度提高,您開始花費建構指令碼的時間遠超過實際程式碼。對殼層指令碼進行偵錯很困難,因為很多駭客攻擊會相互重疊,

  • 動作太慢。為了確保您不會意外依賴過時的程式庫,您必須讓建構指令碼在每次執行時依序執行。您打算加上一些邏輯來偵測哪些部分需要重建,但聽起來似乎複雜又難以出錯。或是想指定每次需要重建的部分,然後回到正方形部分。

  • 好消息:該版本已正式發布!建議您更完整地瞭解需要哪些引數,才能傳遞到 jar 指令時進行最終建構作業。另外也請記得,如何將影片上傳並推送至中央存放區。建構並推送說明文件更新,並傳送通知給使用者。嗯...或許這是呼叫其他指令碼...

  • 災難!您的硬碟當機了,現在需要重新建立整個系統。您非常聰明,可以將所有來源檔案存放在版本管控中,但您下載的程式庫呢?方便您再次查看這些項目,確定它們與第一次下載時的版本相同?您的指令碼可能需要依賴在特定位置安裝的特定工具,可以還原相同的環境,讓指令碼再次運作嗎?那麼,這些環境變數過去很久以前,為了讓編譯器正常運作,但又忘了忘記呢?

  • 儘管存在這些問題,您的專案也已足夠,可以開始聘請更多工程師。現在,您已經瞭解以往不會遇到先前問題的風險,但每當新開發人員加入團隊時,您都必須按照相同的引導程序進行。不過,儘管您努力了,但每個人的系統仍然有些微差異。通常在某人的機器中運作,另一台電腦上無法順利運作,每次偵錯工具路徑或程式庫版本都需要數小時的時間,才能找出兩者之間的差異。

  • 您決定要自動化建構系統。理論上,這相當於取得新電腦並設為使用 Cron 每晚執行指令碼的程序。您仍然必須完成艱難的設定程序,但現在沒辦法解決人類腦部的優勢,以便偵測並解決小問題。如今到了您每天早上,您就會發現昨天的建構作業失敗,因為開發人員昨天變更了設定,從系統進行,但不會自動化自動化建構系統。每次修正都是簡單的解決方法,但這是很頻繁的現象;一般來說,您每天都要花費許多時間來探索和套用這些簡單的修正方法。

  • 隨著專案成長,版本會變慢或變慢。有一天,等待等待系統完成建構作業時,您就會大 at 眼見在同事休假中的閒置電腦,並希望能夠妥善利用所有浪費的運算作業電源。

您的大規模規模問題。如果開發人員耗費最多一百個程式碼,且工作時間長達一至兩週,且一直以來,曾在就讀的大學中任職。只需要編譯器即可。指令碼有點複雜。但如果您需要跨多個開發人員及其機器協調協調,即使是最完美的建構指令碼並不夠,因為這類機器對於這些機器的微小差異而言更是困難。此時,這個簡單的方法即可細分,現在是建立真實建構系統的最佳時機。