[精讚] [會員登入]
600

【Nexus Repository Manager】(deploy)使他人可以對遠端資料庫做讀寫

使用 Nexus Repository Manager 來讓各個工程師控制自己的 Jar 包,不會有 Github Merge Crashed 問題。

分享此文連結 //n.sfs.tw/16119

分享連結 【Nexus Repository Manager】(deploy)使他人可以對遠端資料庫做讀寫@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-03-20 19:37:11 最後編修
2023-03-20 17:42:09 By 過路君子
 

大家好,這裡是正在讀寫資料庫的小編過路君子

好不容易架好了資料庫,那第一件事情當然是......對!上來發個文

 

 

Nexus Repository Manager 的安裝在網路上各處已經有許許多多的人對此著墨了。

所以小編在此不提及如何安裝,僅筆記如何設定權限讓他人「」可以將寫好的 jar 包上傳至資料庫。

順帶一提,小編所架設的 Maven Repository 是全世界都能連線,但是必須要擁有帳號和密碼才能對其做存取,所以相對的會附上完整的 setting.xml 和 pom.xml 供各位參考。

 

首先,我們先連線到 Nexus Repository Manager 的管理頁面並登入 admin 的帳號。

(所有圖片點擊都可以放大、變高清)

在新增角色的時候我們僅需簡單設置兩個屬性:名稱和權限。

名稱相對好理解,就依照各自的喜好或是習慣叫就好。

 

而我們總共需要新增的權限為以下四個:

nx-repository-view-*-*-add
nx-repository-view-*-*-edit
nx-repository-view-*-*-read
nx-repository-view-*-*-browse

其中的 nx-repository-view-*-*-browse 可有可無。

如果沒有給予,仍就可以透過 Maven 來部署(deploy)我們的 jar 包到遠端資料庫,只是就不能透過瀏覽器直接連線到資料庫內查看目前有哪些 jar 包可用。

 

如果細心點的人就會發現,基本上唯獨 nx-repository-view-*-*-delete 的權限之外小編都給了。

如果此權限不給的話就只能上傳 jar 包而已,無法對已經上傳的 jar 包進行刪除,各位可以依照自己目前所需斟酌給予。

 

我們的資料庫預設會阻擋重複上傳的 jar 包,所謂的重複上傳就是 groupId 和 artifactId 還有 version 所對應的路徑已經有檔案的存在了。

所以使用者如果沒有刪除的權限,那不小心上傳錯 jar 包是無法刪除重傳或是強制覆蓋的,只能將版本號改動並再次上傳了。

如果想要允許使用者能覆蓋已經存在的檔案,可以透過下列的方式來修改:

進入將頁面往下滾動,找到 Hosted → Deployment policy 選擇「Allow redeploy」即可。

 

然後將此角色給予我們現有的使用者即可:

同樣往下滑,找到 Roles 區塊,將剛剛創建的身分組從左邊移動到右邊。

這樣,這位使用者就可以對我們的 Maven Repository 進行 jar 檔的部署囉!

 

接下來小編就在這快速地丟出 setting.xml 和 pom.xml 這兩個檔案。

<!-- setting.xml -->

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">;
  <localRepository>/usr/share/maven/ref/repository</localRepository>

  <servers>
    <server>
      <id>maven-public</id>
      <username>username</username>
      <password>password</password>
    </server>

    <server>
      <id>maven-releases</id>
      <username>username</username>
      <password>password</password>
    </server>

    <server>
      <id>maven-snapshots</id>
      <username>username</username>
      <password>password</password>
    </server>
  </servers>

  <mirrors>
    <mirror>
      <id>maven-public</id>
      <name>maven-public</name>

      <url>http://127.0.0.1:8080/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>
      <updatePolicy>always</updatePolicy>
    </mirror>
  </mirrors>
</settings>

小編在設定 mirrors 上吃了很大的悶虧,因為目前網路上常見的版本都僅有設置 maven-releases 庫和 maven-snapshots 庫的登入資訊。

反而對於我們要拉檔案的 maven-public 庫沒有設置任何的資訊,所以一旦執行就會吃到以下的錯誤:

Transfer failed for http://127.0.0.1:8080/repository/maven-releases/jar/execute/file/1.0.0/test-1.0.0.jar 401 Unauthorized

 

接下來就是 pom.xml 的設定了:

<!-- 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/maven-v4_0_0.xsd">;
    <modelVersion>4.0.0</modelVersion>

    <groupId>please.fix.here</groupId>
    <artifactId>yourRepo</artifactId>
    <version>0.0.0</version>

    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <distributionManagement>
        <repository>
            <id>maven-releases</id>
            <name>User Porject Release</name>
            <url>http://127.0.0.1:8080/repository/maven-releases/</url>
        </repository>

        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>User Porject Snapshot</name>
            <url>http://127.0.0.1:8080/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>maven-public</id>
            <name>Nexus Repository</name>
            <url>http://127.0.0.1:8080/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java/</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                    <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

話說,其實資料庫的連線網址 Nexus Repository Manager 都已經有幫我們寫出來了。

 

 

 

後記

安裝好之後小編有試著 deploy 一個 jar 包到那個資料庫裡面,然後再跑去開一台乾淨的電腦,照著上面的那兩個檔案再次設定一次。

在經過一番琢磨 import 資訊該如何打之後,總算成功將位於小編私架的 Maven Repository 上的 jar 包執行起來啦!

END

你可能感興趣的文章

【Nexus Repository Manager】(deploy)使他人可以對遠端資料庫做讀寫 使用 Nexus Repository Manager 來讓各個工程師控制自己的 Jar 包,不會有 Github Merge Crashed 問題。

【SeaChest & Synology】512e(Advanced Format / AF) 轉換至 4Kn 好不容易入手了一顆硬碟,但是卻無法使用,除了賣掉還有更好的方法嗎?

【Python3】[Django] (Windows / Liunx) 如何從零開始創建一個網站 除了最基本的運作以外,還小小的加上了如何自導向特定目錄。

【Minecraft】[CoreProtect|BungeeCord]如何重新命名世界或維度名稱 當只有一個伺服器的時候,問題往往處理起來非常簡單,但是一旦當伺服器成長至兩台以上,事情便開始有趣了起來

【MySQL】每個類別中取前三高 一個由多層次所組成的SELECT述句

【Python3】11 - 字典(Dictionary)的使用範例 python3的幾個字典使用範例,改寫自他人perl的範例

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

高捷少女:布拉格體驗㊤ 「可……可以去歐洲玩?而且還有人出錢?太棒囉!」婕兒忍不住歡呼起來,把扳手拋呀拋的,旁邊的客人紛紛轉過來看。「好了啦!」耐耐忍不住害羞起來,輕輕敲了一下婕兒的頭

高捷少女:耐耐的新年驚喜(終) 他的話說到一半,便被一陣響亮的哭聲打住了,是從產房中的傳來的。聽起來就像嬰兒的哭聲。 婕兒、小穹跟艾米也被哭聲吵醒,婕兒揉揉眼睛,看向呆若木雞的耐耐父女。「剛剛的聲音,該不會是……」

【歌評】蓮台野夜行 - 幻視之夜 ~ Ghostly Eyes 若有什麼是在聽到boss曲前的鋪襯,那一定就是每個系列的道中曲

【日翻中歌詞】ピースサイン(Peace Sign) 那一天從我們的頭頂 輕掠而過的那架飛機 有點不可思議 還記得 為何呢?毫無意義 

【數學】徐氏數學簡明講義(三) 第二章 直線與園 P2.1-15 Q13 13.若阿強解方程式得;   小饅頭解方程式得,則數對(a,b) = ___ 解: 各將她們兩個求得的答案代回去 將第二