Docker中Maven私服的搭建


為何用到Maven私服?

在實際開發中,項目中可能會用到第三方的jar、內部通訊的服務接口都會打入到公司的私服中。

我們從項目實際開發來看:

  1. 一些無法從外部倉庫下載的構件,例如內部的項目還能部署到私服上,以便供其他依賴項目使用。

  2. 為了節省帶寬和時間,在局域網內架設一個私有的倉庫服務器,用其代理所有外部的遠程倉庫。當本地Maven項目需要下載構件時,先去私服請求,如果私服沒有,則再去遠程倉庫請求,從遠程倉庫下載構件后,把構件緩存在私服上。這樣,及時暫時沒有Internet鏈接,由於私服已經緩存了大量構件,整個項目還是可以正常使用的。同時,也降低了中央倉庫的符合。

如上摘抄自私服服務器架設,如下為詳細步驟:

1、下載一個nexus3的鏡像

docker pull sonatype/nexus3

2、將容器內部/var/nexus-data掛載到主機/root/nexus-data目錄

docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3

通過 docker ps -a 查看容器啟動情況

驗證,通過id查看容器的詳細信息,輸出如下ip地址。

docker inspect 容器id

緊接着訪問以下這個地址試一下:curl 127.17.0.2:8081

如果啟動失敗,可關閉防火牆再試一下:

systemctl stop firewalld.service

ok,啟動后瀏覽器訪問一下 http://ip:8081

至此,私服搭建成功。

默認登陸賬號 admin admin123

注意,這個時候你可能會遇到如下這個錯誤:

Incorrect username or password, or no permission to use the application.

maven私服登錄的時候默認是不能使用明文密碼,要使用密文密碼,一般在你創建容器的目錄下,比如 root/nexus-data/admin.password ,注意,需要進入容器中找,見下方指令與圖:

docker exec -it c2101070de57 bash
bash-4.2$ cd /nexus-data/
bash-4.2$ cat admin.password 
d62fa667-a22b-41db-a14a-6aa6f793f4fbbash-4.2

去掉后面的 bash-4.2$d62fa667-a22b-41db-a14a-6aa6f793f4fb 即為密碼。

重新登陸后,會提示你重設密碼:

3、創建maven倉庫

上傳maven私服之前我們先,創建個倉庫

選擇maven2(hosted)

填寫倉庫信息:

創建用戶:

填寫基本信息

創建好賬戶后就可以在右上角切換賬戶了。

接着就是配置本地 maven > conf 了,找到自己本機的 maven conf 下的 setting.xml 文件,添加如下信息:

注意是 services 節點下:

<services>
    <server>
        <id>ttyy</id>
        <username>ttyy</username>
        <password>ttyy</password>
    </server>
 </services>

4、如何將架包上傳到maven私服

創建一個普通的 maven 項目,配置 pom.xml 如下:

<!--注意限定版本一定為RELEASE,因為上傳的對應倉庫的存儲類型為RELEASE -->
<!--指定倉庫地址 -->
<distributionManagement>
    <repository>
        <!--此名稱要和.m2/settings.xml中設置的ID一致 -->
        <id>ttyy</id>
        <url>http://192.168.10.130:8081/repository/ttyy-release/</url>
    </repository>
</distributionManagement>

<build>
    <plugins>
        <!--發布代碼Jar插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.7</version>
        </plugin>
        <!--發布源碼插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

項目命令行中執行如下指令:

mvn deploy

發布成功后,如何搜索呢?如下圖:

發布后如何使用呢,相信很多小伙伴肯定用過阿里雲的私服,一樣的道理啦:

<dependencies>
    <dependency>
        <groupId>club.sscai</groupId>
        <artifactId>ttyy-springboot</artifactId>
        <version>1.0-RELEASE</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>ttyy</id>
        <url>http://192.168.10.130:8081/repository/ttyy-release/</url>
    </repository>
</repositories>

我創建了一個java相關的公眾號,用來記錄自己的學習之路,感興趣的小伙伴可以關注一下微信公眾號哈:niceyoo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM