Maven私有倉庫-Nexus3

言午日堯耳總發表於2023-04-16

Maven私有倉庫-Nexus3

  • 工作中,可能需要封裝一些通用的工具類庫
  • 但是公司程式碼較為敏感,一般不能開放到公共倉庫中
  • 此時可以使用Nexus3搭建公司內部使用的私有倉庫
  • 影片版:BiliBili

Demo步驟

  1. 使用docker建立Nexus3服務
  2. 建立專案並推送倉庫

    • 修改專案pom.xml檔案配置
    • 修改Maven軟體配置
    • 使用"mvn deploy"命令,推送到到倉庫
  3. 建立專案並引用上一步的專案

    • 修改Maven軟體配置
    • 重啟IDE
    • 使用"mvn install"命令,安裝依賴

1. 使用docker建立nexus3服務

  • 使用docker建立nexus3容器

    • 訪問:http://127.0.0.1:8081
    • 較吃資源,啟動速度較慢,顯示無法訪問頁面就多等一會兒(電腦渣的可能要個三五分鐘,比如我的)
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
  • 獲取nexus3密碼

    • 點選頁面右上角的"Sign in",按彈窗提示找到預設密碼

      • 預設賬號:admin
      • 預設密碼:容器內的 "/nexus-data/admin.password"
      • 會提示重置密碼,改個記得住的密碼(或者用預設密碼),後面配置需要用到
  • 如下圖,複製"maven-releases"/"maven-snapshots"倉庫地址

nexus.png

  • nexus-public是一個倉庫分組,預設包含以下倉庫

2. 建立專案並推送倉庫

修改專案pom.xml檔案配置

  • 直接改造Maven專案(或者新建一個Maven專案)

    • 執行"mvn package"能打包出jar的專案就行
    • 如下在pom.xml新增nexus3地址資訊

      • 與dependencies/build同級
    <dependencies>...略</dependencies>
    <build>...略</build>

    <distributionManagement>
        <repository>
            <id>maven-releases</id>
            <name>maven-releases</name>
            <url>${這裡填寫從nexus頁面上覆制的maven-releases的url}</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>maven-snapshots</name>
            <url>${這裡填寫從nexus頁面上覆制的maven-snapshots的url}</url>
        </snapshotRepository>
    </distributionManagement>
  • 推送包

    • 執行 "mvn deoloy"
    • 此時報錯 "...status: 401 Unauthorized",說明專案配置正確

修改Maven軟體配置

  • 開啟 ${maven根目錄}/conf/settings.xml

    • 增加nexus賬號密碼
    • id要和在專案pom.xml中配置的一致
<servers>
    <server>
        <id>maven-releases</id>
        <username>admin</username>
        <password>${密碼}</password>
    </server>
    <server>
        <id>maven-snapshots</id>
        <username>admin</username>
        <password>${密碼}</password>
    </server>
</servers>
  • 再次執行"mvn deploy"就不會報錯了

    • 重新整理nexus頁面上可以看到上傳的包

      • 專案版本不帶"-SNAPSHOT"在"maven-releases"目錄
      • 否則在"maven-releases"目錄

3. 建立專案並引用上一步的專案程式碼

修改Maven軟體配置

  • 開啟 ${maven根目錄}/conf/settings.xml

    • 啟用映象,如果有其他映象可以註釋掉
  • 重啟IDE,pom.xml中像線上的庫一樣新增dependency即可使用
<mirror>
    <id>nexus-public</id>
    <mirrorOf>*</mirrorOf>
    <name>私有倉庫</name>
    <url>${這裡填寫從nexus頁面上覆制的maven-public的url}</url>
</mirror>

參考資料

相關文章