[精讚] [會員登入]
228

【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

你可能感興趣的文章

【NodeMCU / ESP8266】[Arduino]測量溫溼度並上傳至ThinkSpeak 使用簡單的溫度計來測量溫濕度並上傳至第三方網站,這樣他人只要有瀏覽器就能看到我們的數據了

【Javascript】(Event)常用的網頁事件 不寫下來絕對下又會忘記,然後每次又都要回到MDN去查,麻煩

【ThinkSpeak】一個IoT數據分析(IoT analytics)及呈現的網站 世界上有著各式各樣的需求,因而誕生出了各式各樣的網站,絕對不是沒有人提供,而是你不知道哪裡有這東西

【JDA/discord bot】取得頻道第一筆或最新(最後一筆)的歷史訊息 在不處理訊息的先後順序下取得相關的歷史訊息

【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料 大家好,這裡是準備要去參加FF38的小編過路君子 本來只要自己去,結果臨時有人說要一起去,那...好吧!走~ 對於一般人

【C++】SFML安裝於Microsoft Visual Studio 2019 此方法僅適用單個C++專案,因為一次就適用整台電腦的方式有人寫了,而且寫得非常不錯。

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

【分享、整合串】什麼?!高捷少女竟然有二創小說!! 由時零宇宙大大在巴哈上面連載的二創高捷少女小說,就讓我們來看看,究竟在時零大大的巧手下,高捷少女們會擦出什麼樣的火花吧!

高捷少女:地下城的探險少女⑤ 小穹寫好後,耐耐看了一遍。「我想我應該辦得到。」她說完跪坐在地上,然後把古箏安放在大腿上,並將樂譜放在前面的地板。「要開始囉。」耐耐閉上眼睛,深呼吸一口氣,小穹等人在一旁看著她,心中暗自替她打氣。

高捷少女:美麗島的守護者⑤  雖然暫時不用怕牠們了,可是一直躲在這裡終究不是辦法,小雅心想。她看看四周,這間更衣室沒有窗戶或後門,她不禁著急起來,不可能一直躲在這裡面,但從門出去只會被群貓圍攻而已。小雅低下頭苦思該怎麼辦,過了不

高捷少女:耐耐的新年驚喜① 耐耐拿出手機。「我回來囉。」她說。幾分鐘後,木門緩緩打開。當它完全開啟的那一刻,小穹手中的包包掉到地上;艾米揉揉雙眼,確定自己看見的景象;婕兒的三魂七魄飛到了九霄雲外。

高捷少女:耐耐的新年驚喜③ 即使如此,夫人仍然每年都會問老爺是否能空出一週時間,但總是被回絕,除了前年以外。老爺答應夫人一定會排出空檔,他們在去年的二十三日前往澳洲。」耐耐嘆了口氣。「那一天的晚上,我打電話給媽媽時,她很高興地告