在 Java 開發中,管理專案構建產物版本是不可或缺的一環。本文將引導你使用 Nexus 倉函式庫來儲存和管理 Java API 的 JAR 檔案,並示範如何透過 Maven 將專案建置產物自動發布到 Nexus 倉函式庫。此流程能有效地控管 API 版本,方便團隊協作和後續佈署。透過整合 Maven 與 Nexus,開發者可以簡化發布流程,確保構建產物的一致性和可靠性,提升整體開發效率。
整合Maven與Nexus倉函式庫並建立自由式工作以發布Java API
瞭解Nexus倉函式庫
在前一節中,我們學習了Git版本控制系統。現在,讓我們來探討一下Nexus倉函式庫,這是一種用於儲存軟體構建產物的倉函式庫。
什麼是構建產物?
構建產物是指在軟體構建過程中生成的檔案,例如,當你構建一個Web應用程式時,生成的WAR檔案就是一個構建產物。在Java API專案中,你會將實作封裝成JAR檔案,這也是構建產物的一種。
什麼是Nexus倉函式庫?
當你為計算器API新增功能時,Git會記錄不同版本的原始碼。但是,除了原始碼版本控制外,你還需要一個系統來管理不同版本的構建產物。Nexus倉函式庫就是這樣的一個系統,它提供了一個平臺讓你可以發布構建產物,並讓使用者從中下載所需的版本。
安裝Nexus倉函式庫
要安裝Nexus倉函式庫,你可以從Sonatype官方網站下載Nexus倉函式庫的ZIP包。然後,解壓縮到你係統上的某個位置,例如,D:\NexusRepository。
解壓縮後,你會看到以下幾個目錄:
nexus-3.30.1-01:包含Nexus系統相關的檔案,例如,bin目錄下的Nexus.exe可以用來啟動Nexus系統。sonatype-work:包含不同構建產物倉函式庫的資料,用於管理不同版本的構建產物。
啟動Nexus倉函式庫系統
要啟動Nexus倉函式庫系統,你需要設定啟動的IP地址和埠號。你可以在etc目錄下的nexus-default.properties檔案中設定這些引數。
例如,你可以將application-port設為8081,並將application-host設為你想要啟動Nexus伺服器的機器IP地址。儲存更改後,你就可以啟動Nexus系統了。
設定Nexus倉函式庫
啟動Nexus倉函式庫系統後,你需要設定倉函式庫的基本資訊,例如,倉函式庫名稱、描述等。然後,你就可以建立新的構建產物倉函式庫,用於管理你的Java API專案的不同版本。
建立自由式工作以發布Java API
要發布Java API,你需要建立一個自由式工作(Freestyle Job)。這個工作會將你的Java API專案封裝成JAR檔案,並將其發布到Nexus倉函式庫中。
建立自由式工作
你可以在Jenkins中建立一個新的自由式工作。然後,組態工作的基本資訊,例如,工作名稱、描述等。
組態Maven任務
在工作中,你需要組態Maven任務,以便將你的Java API專案封裝成JAR檔案。你可以在工作的組態頁面中新增一個Maven任務,並設定相關的引數,例如,Maven目標、pom檔案路徑等。
組態Nexus倉函式庫發布
然後,你需要組態Nexus倉函式庫發布。你可以在工作的組態頁面中新增一個Nexus倉函式庫發布任務,並設定相關的引數,例如,倉函式庫URL、憑證等。
執行工作
組態完成後,你就可以執行工作了。工作會將你的Java API專案封裝成JAR檔案,並將其發布到Nexus倉函式庫中。
整合Maven與Nexus倉函式庫並建立自由式工作以在Nexus倉函式庫中發布Java API
啟動Nexus伺服器
首先,需要啟動Nexus伺服器。開啟命令提示符,切換到Nexus安裝目錄下的bin目錄。然後,執行Nexus.exe /run命令啟動Nexus伺服器。等待伺服器啟動完成,這可能需要幾分鐘的時間,特別是如果您第一次設定Nexus倉函式庫。
安裝Nexus作為Windows服務
您可以使用以下命令將Nexus安裝為Windows服務:
Nexus.exe /install <服務名稱>
這裡,<服務名稱>是可選的。開啟命令提示符,切換到${NexusInstallationDir}\bin目錄,然後執行Nexus.exe /install MyNexusService命令。
存取Nexus倉函式倉管理員
開啟瀏覽器,輸入http://localhost:8081(假設Nexus伺服器啟動在8081埠)存取Nexus倉函式倉管理員。點選右上角的「Signin」按鈕,輸入使用者名稱和密碼(預設使用者名稱為admin,密碼位於${NexusInstallationDir}\sonatype-work\nexus3\admin.password檔案中)。點選「Signin」按鈕登入。
建立主機倉函式庫以發布工件
點選「Server Administration and Configuration」按鈕,然後點選「Repositories」連結。點選「Create Repository」按鈕,選擇「Maven2 (hosted)」作為倉函式庫型別。輸入倉函式庫名稱,例如JenkinsBookCalculatorAPI_Release。滾動到頁面底部,點選「Create Repository」按鈕建立倉函式庫。
整合Maven與Nexus倉函式庫
現在,您需要將Maven與Nexus倉函式庫整合。這涉及組態Maven以使用Nexus倉函式庫作為其工件儲存函式庫。
內容解密:
graph LR
A[Maven] -->|整合|> B[Nexus倉函式庫]
B -->|儲存|> C[工件]
C -->|管理|> D[Nexus倉函式倉管理員]
圖表翻譯:
此圖表展示了Maven與Nexus倉函式庫之間的整合過程。Maven將工件發布到Nexus倉函式庫中,然後Nexus倉函式倉管理員負責管理和儲存這些工件。
自由式工作
自由式工作允許您定義一個工作流程,以便在Nexus倉函式庫中發布Java API。您可以使用Jenkins或其他CI/CD工具來定義和執行這個工作流程。
內容解密:
// Maven組態檔案pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>calculator-api</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>Calculator API</name>
<description>Calculator API</description>
<distributionManagement>
<repository>
<id>nexus</id>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
</project>
圖表翻譯:
此Maven組態檔案pom.xml定義了一個Java API專案,並指定了其群組ID、工件ID、版本和包裝方式。它還定義了發布倉函式庫的URL,指向Nexus倉函式庫的發布倉函式庫。
整合Maven與Nexus倉函式庫並建立自由式工作以發布Java API
在前面的章節中,您已經組態了Nexus倉函式庫作為中央工件倉函式庫,以發布Java API Calculator.jar檔案。現在,您需要告知Maven使用新建立的Nexus倉函式庫。
步驟1:組態Nexus倉函式庫URL
您需要在專案的pom.xml檔案中列出Nexus倉函式庫URL。您可以透過以下步驟取得倉函式庫URL:
- 複製URL欄位中的URL。
- 開啟
pom.xml檔案,並在<distributionManagement>標籤下新增此URL,如下所示:
<distributionManagement>
<!-- 發布版本化發布 -->
<repository>
<id>myNexusRepo</id>
<name>myNexusRepo</name>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
步驟2:組態Nexus倉函式庫使用者名稱和密碼
由於Nexus倉函式庫不允許匿名存取,您需要在settings.xml檔案中提供Nexus倉函式庫的使用者名稱和密碼(如果檔案不存在,請在${user.home}/.m2目錄下建立一個)。以下是組態Nexus倉函式庫使用者名稱和密碼的示例:
<servers>
<server>
<!-- 此ID應與pom.xml中提到的儲存函式庫伺服器ID相匹配 -->
<id>myNexusRepo</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
請注意,<id>欄位中的值應與pom.xml檔案中的<repository>標籤中的<id>欄位值相同。
步驟3:發布CalculatorAPI.jar檔案至Nexus倉函式庫
您已經組態了Nexus倉函式庫URL和憑證。現在,您可以發布CalculatorAPI.jar檔案至Nexus倉函式庫。
- 開啟命令提示符,切換到Java API專案目錄。
- 執行
mvn deploy命令。
此命令將執行所有構建生命週期階段,例如下載資源、編譯原始碼、編譯單元測試程式碼、執行單元測試案例和封裝類別檔案至CalculatorAPI1.0.jar。作為最終階段,已建立的CalculatorAPI1.0.jar將被佈署至Nexus倉函式庫。
步驟4:驗證發布
讓我們前往Nexus倉函式庫並檢視發布結果。前往Nexus倉函式庫儀錶板,然後點選左側的「瀏覽」連結,檢視「儲存函式庫」列表中是否有您剛剛發布的CalculatorAPI.jar檔案。
內容解密:
在這個過程中,我們使用Maven將Java API Calculator.jar檔案發布至Nexus倉函式庫。首先,我們需要在pom.xml檔案中組態Nexus倉函式庫URL,然後在settings.xml檔案中組態使用者名稱和密碼。最後,執行mvn deploy命令即可將CalculatorAPI.jar檔案發布至Nexus倉函式庫。
圖表翻譯:
flowchart TD
A[開始] --> B[組態Nexus倉函式庫URL]
B --> C[組態使用者名稱和密碼]
C --> D[執行mvn deploy命令]
D --> E[發布CalculatorAPI.jar檔案至Nexus倉函式庫]
E --> F[驗證發布結果]
在這個流程圖中,我們展示了整個發布過程,從組態Nexus倉函式庫URL到驗證發布結果。每一步驟都很重要,確保CalculatorAPI.jar檔案能夠成功發布至Nexus倉函式庫。
在持續整合與交付的浪潮下,有效管理構建產物已成為軟體開發流程中不可或缺的一環。本文深入探討瞭如何利用 Nexus 倉函式倉管理 Java API 的構建產物,並透過 Maven 完成自動化發布流程。透過設定pom.xml中的<distributionManagement>以及settings.xml中的伺服器認證資訊,Maven 可以順暢地將構建產物佈署至 Nexus 倉函式庫。此舉不僅確保了構建產物的版本控制,也簡化了團隊協作和軟體交付流程。然而,單純的佈署並不足以保證軟體品質,後續的版本管理、依賴解析、以及與其他 CI/CD 工具的整合,才是充分發揮 Nexus 倉函式庫價值的關鍵。對於追求工程效率的團隊而言,更進一步的探索如何客製化 Nexus 倉函式庫以滿足特定專案需求,將是提升軟體交付效能的下一步。玄貓認為,善用 Nexus 倉函式庫這類別工具,能有效降低技術債務,並為建構更穩健、可擴充套件的軟體系統奠定基礎。