部署構(gòu)件到Nexus

如果僅僅是為了代理遠(yuǎn)程的公共倉庫,那么 Nexus 的代理倉庫就完全能夠滿足需要,但是我們知道,Nexus 除了代理倉庫外,還有另一種倉庫:宿主倉庫。

宿主倉庫的主要作用是存儲(chǔ)公司或組織內(nèi)部的構(gòu)件,以及一些無法從公共倉庫獲取的第三方構(gòu)件(JDBC 驅(qū)動(dòng)),供用戶下載使用。用戶可以通過配置 Maven 將構(gòu)件自動(dòng)部署到 Nexus 宿主倉庫,也可以在 Nexus 界面手動(dòng)上傳構(gòu)件。

使用 Maven 部署構(gòu)件到 Nexus

日常開發(fā)中,快照版本構(gòu)件可以直接部署到 Nexus 中策略為 Snapshot 的宿主倉庫中,而最終發(fā)布的版本則應(yīng)該部署到 Nexus 中策略為 Release 的宿主倉庫中。

使用 Maven 將構(gòu)件部署到 Nexus 宿主倉庫中主要分為 3 步:

  • 配置項(xiàng)目的 POM 文件。

  • 在 setting.xml 中配置認(rèn)證信息。

  • 使用 mvn 命令部署構(gòu)件。

下面我們通過一個(gè)實(shí)例來詳細(xì)介紹如何使用 Maven 部署構(gòu)件到 Nexus 宿主倉庫。

1. 配置項(xiàng)目的 POM 文件

下面我們通過一個(gè)實(shí)例來詳細(xì)介紹如何使用 Maven 部署構(gòu)件到 Nexus 宿主倉庫。

創(chuàng)建一個(gè)名為 test-upload-snapshot 的 Maven 項(xiàng)目,并在其 POM 文件中添加如下配置。

<project>
    ...
    <distributionManagement>
        <repository>
            <id>bianchengbang_Release_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Release_hosted/</url>
        </repository>
        <snapshotRepository>
            <id>bianchengbang_Snapshot_hosted</id>
            <url>http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hosted/</url>
        </snapshotRepository>
    </distributionManagement>
</project>
                

以上配置說明如下:

  • distributionManagement 元素:負(fù)責(zé)將指定的構(gòu)件部署到 Nexus 指定的倉庫中。

  • repository 元素:distributionManagement 的子元素,用于定義部署 Release 版本的構(gòu)件被部署的倉庫。它有 2 子元素:id 和 url ,其中 id 為 Nexus 倉庫的唯一標(biāo)識(shí),url 為 Nexus 宿主倉庫的 url。

  • snapshotRepository 元素:distributionManagement 的子元素,用于定義部署 Snapshot 版本的構(gòu)件被部署的倉庫。它也有 2 子元素:id 和 url ,且與 repository 中含義一致。

2. 在 setting.xml 中配置認(rèn)證信息

最初版本的 Nexus 沒有為宿主倉庫提供任何的安全措施。如果宿主倉庫開啟了部署功能,任何人可以連接并部署構(gòu)件至這個(gè)倉庫,這顯然是極不安全的。因此,現(xiàn)在的 Nexus 中增加了權(quán)限認(rèn)證,Nexus 對(duì)于匿名用戶是只讀的,若想部署構(gòu)件到 Nexus 中,則需要在 setting.xml 中配置如下認(rèn)證信息。

<settings>
    ...
    <servers>
        <server>
            <id>bianchengbang_Release_hosted</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
        <server>
            <id>bianchengbang_Snapshot_hosted</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
</settings>
                

注意:以上配置中,server 元素中的 id 必須和 pom.xml 中 distributionManagement 元素對(duì)應(yīng)倉庫的 id 保持一致。Maven 在部署構(gòu)件時(shí),會(huì)先根據(jù) id 查找用戶名稱和密碼進(jìn)行認(rèn)證和登錄,然后將構(gòu)件部署到對(duì)應(yīng)得宿主倉庫。

3. 使用 mvn 命令部署構(gòu)件

完成以上配置之后,就可以使用 Maven 命令將構(gòu)件部署到宿主倉庫了,操作步驟如下。

1)打開命令行窗口,跳轉(zhuǎn)到 test-upload-snapshot 項(xiàng)目得目錄下,執(zhí)行如下 Maven 命令。

mvn clean deploy

2) Maven 命令執(zhí)行結(jié)果如下圖。

[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< net.biancheng.www:test-upload-snapshot >---------------
[INFO] Building test-upload-snapshot 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test-upload-snapshot ---
[INFO] Deleting D:\eclipse workSpace 3\test-upload-snapshot\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test-upload-snapshot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ test-upload-snapshot ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test-upload-snapshot ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ test-upload-snapshot ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ test-upload-snapshot ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ test-upload-snapshot ---
[INFO] Building jar: D:\eclipse workSpace 3\test-upload-snapshot\target\test-upload-snapshot-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ test-upload-snapshot ---
[INFO] Installing D:\eclipse workSpace 3\test-upload-snapshot\target\test-upload-snapshot-0.0.1-SNAPSHOT.jar to D:\myRep
ository\repository\net\biancheng\www\test-upload-snapshot\0.0.1-SNAPSHOT\test-upload-snapshot-0.0.1-SNAPSHOT.jar
[INFO] Installing D:\eclipse workSpace 3\test-upload-snapshot\pom.xml to D:\myRepository\repository\net\biancheng\www\te
st-upload-snapshot\0.0.1-SNAPSHOT\test-upload-snapshot-0.0.1-SNAPSHOT.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ test-upload-snapshot ---
Downloading from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_
hosted/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml
Downloaded from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_h
osted/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml (787 B at 9.2 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.jar
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.jar (2.1 kB at 28 k
B/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.pom
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/test-upload-snapshot-0.0.1-20210322.030343-5.pom (2.4 kB at 36 k
B/s)
Downloading from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_
hosted/net/biancheng/www/test-upload-snapshot/maven-metadata.xml
Downloaded from bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_h
osted/net/biancheng/www/test-upload-snapshot/maven-metadata.xml (297 B at 11 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/0.0.1-SNAPSHOT/maven-metadata.xml (787 B at 14 kB/s)
Uploading to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_host
ed/net/biancheng/www/test-upload-snapshot/maven-metadata.xml
Uploaded to bianchengbang_Snapshot_hosted: http://localhost:8082/nexus/content/repositories/bianchengbang_Snapshot_hoste
d/net/biancheng/www/test-upload-snapshot/maven-metadata.xml (297 B at 5.2 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.342 s
[INFO] Finished at: 2021-03-22T11:03:44+08:00
[INFO] ------------------------------------------------------------------------
                

在 Nexus 界面的倉庫列表選中 bianchengbang_Snapshot_hosted 宿主倉庫,在下方的 Browse Index 選項(xiàng)卡中,可以看到 test-upload-snapshot 構(gòu)件已經(jīng)被部署到該倉庫中,如圖 1 所示。

使用 Maven 部署構(gòu)件到 Nexus
使用 Maven 部署構(gòu)件到 Nexus

手動(dòng)上傳構(gòu)件

有些 Jar 文件(如 Oracle 的 JDBC 驅(qū)動(dòng))由于許可證等原因,無法存放在公開倉庫中。此外,還有一些小型的開源項(xiàng)目,它們沒有將自己的構(gòu)件分發(fā)到公共倉庫中,也沒有維護(hù)自己的倉庫,因此這些構(gòu)件是無法從公共倉庫中獲得的。若 Maven 項(xiàng)目中需要這類構(gòu)件,我們就需要將構(gòu)件下載到本地,然后手動(dòng)上傳到 Nexus 私服。

我們還是以 Maven 項(xiàng)目 App-Core-lib 為例,將其打包后手動(dòng)上傳到 Nexus 內(nèi)置宿主倉庫 3rd party 中,具體步驟如下。

1. 打開命令行窗口,跳轉(zhuǎn)到 App-Core-lib 的目錄下,執(zhí)行如下 mvn 命令,對(duì)項(xiàng)目進(jìn)行打包。

mvn clean package

2.打包完成后,進(jìn)入 App-Core-lib\target 目錄,可以看到 Maven 已經(jīng)將該項(xiàng)目打包成了一個(gè) jar 文件,如圖 2 所示。

Maven 打包生成 jar 文件
Maven 打包生成 jar 文件

3. 在 Nexus 界面的倉庫列表中選擇 3rd party 倉庫,在下方選擇 Artifact Upload 選項(xiàng)卡,其中 GAV Definition 用于定義上傳構(gòu)件的坐標(biāo)信息。

GAV Definition 中提供了兩種定義構(gòu)件坐標(biāo)的方式:

  • 若該構(gòu)件通過 Maven 構(gòu)建產(chǎn)生的,則可以選擇 From POM,Nexus 會(huì)自動(dòng)從 POM 中獲取構(gòu)件的坐標(biāo)。

  • 若該構(gòu)件來自第三方,則只能選擇 GAV Parameters,手動(dòng)定義構(gòu)件的坐標(biāo)。

以上 2 種方式操作時(shí)會(huì)略有不同,下面我們分別對(duì)它們進(jìn)行介紹。

From POM

若該構(gòu)件是通過 Maven 構(gòu)建產(chǎn)生的,那么可以在 GAV Definition 下拉列表中,選擇 From POM,然后指定該構(gòu)件所屬項(xiàng)目的 pom.xml,Nexus 會(huì)自動(dòng)從 pom.xml 中獲取構(gòu)件的坐標(biāo)。最后點(diǎn)擊頁面最下方的 Upload Artifact(s) 按鈕,將構(gòu)件上傳到倉庫中,如圖 3 所示。

Nexus 手動(dòng)上傳構(gòu)件
Nexus 手動(dòng)上傳構(gòu)件

GAV Paramters

若構(gòu)件不是通過 Maven 構(gòu)建的,而是來自第三方(例如 Oracle 的 JDBC 驅(qū)動(dòng)),則只能在 GAV Definition 下拉列表中,選擇 GAV Parameters 手動(dòng)定義構(gòu)件的坐標(biāo)。

GAV Definition 中提供了兩種定義構(gòu)件坐標(biāo)的方式:

定義好坐標(biāo)后,點(diǎn)擊 Select Artifact(s) to Upload... 按鈕選擇要上傳的構(gòu)件,然后點(diǎn)擊 Add Artifact 按鈕將其加入上傳列表中。最后點(diǎn)擊頁面最下方的 Upload Artifact(s) 按鈕,將構(gòu)件上傳到倉庫中,如圖 4 所示。

Nexus 第三方構(gòu)件手動(dòng)上傳
Nexus 第三方構(gòu)件手動(dòng)上傳

4. 在倉庫列表中選中 3rd party 宿主倉庫,在下方的 Browse Index 選項(xiàng)卡中,可以看到構(gòu)件已經(jīng)被部署到該倉庫中,如圖 5 所示。

第三方構(gòu)件手動(dòng)上傳到Nexus
第三方構(gòu)件手動(dòng)上傳到Nexus
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清