maven備忘

1. 搭建私有庫

使用docker搭建私有maven庫,docker image為sonatype/nexus3

  1. 建立數(shù)據(jù)目錄
mkdir /path/of/maven/data
chown 200 /path/of/maven/data

nexus3的運行用戶id為200,所以需要把數(shù)據(jù)目錄的owner改為200。

  1. 啟動服務
docker run -d -p 8081:8081 --name nexus -v /path/of/maven/data:/nexus-data sonatype/nexus3
  1. 登錄nexus服務

    在瀏覽器中輸入127.0.0.1:8081,點擊sign in鏈接,默認的管理員用戶名為admin密碼為admin123
  2. 創(chuàng)建repository

    登錄后,在管理員頁面,可以創(chuàng)建自己的repository。如果創(chuàng)建自己的私有庫,創(chuàng)建時,選擇maven2 (hosted),如果創(chuàng)建代理庫,則選擇maven2 (proxy)。詳見參考文檔[2]
    1. hosted類型

      這里需要變更的是Version policy,有3個選擇:
      1. Release - 表明本庫里放置的是正式發(fā)布的庫文件
      2. Snapshot - 表明本庫里放置的是開發(fā)中的庫文件
      3. Mixed - 表明庫里面放置了上述兩種庫文件
    2. proxy類型

      這里需要填寫的是Remote storage項,可以填寫aliyun的maven鏡像地址http://maven.aliyun.com/nexus/content/groups/public/

經(jīng)過上面的步驟,私有maven庫建立完畢。接下來配置本地的maven配置文件,來使用私有maven庫。

2. 配置maven setting.xml

maven設定文件為~/.m2/setting.xml

<settings>
    <profiles>
        <profile>
            <id>dev</id>
            <repositories>
                <repository>
                    <id>mymvn</id>
                    <url>http://127.0.0.1:8081/repository/mymvn/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <servers>
        <server>
            <id>mymvn</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>
    <mirrors>
        <mirror>
            <id>alimavenlocal</id>
            <name>aliyun maven local</name>
            <url>http://127.0.0.1:8081/repository/aliyunmaven/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

上面的配置文件配置了1個hosted庫,1個proxy庫。以及上傳文件時需要用的用戶名密碼。這里在profiles中配置repository,可以根據(jù)不同的profile使用不同的repository。

3. 部署jar到私有庫

使用mvn命令把jar文件上傳到hosted庫,以alipay sdk為例:

mvn deploy:deploy-file \
  -DgroupId=com.alipay \
  -DartifactId=sdk-java \
  -Dversion=20170829142630 \
  -Dpackaging=jar \
  -Dfile=alipay-sdk-java20170829142630.jar \
  -Durl=http://127.0.0.1:8081/repository/mymvn/ \
  -DrepositoryId=mymvn

4. 配置pom.xml使用私有庫

按照下面的配置即可下載到剛才上傳的alipay sdk

<project>
...
    <repositories>
        <repository>
            <id>mymvn</id>
            <url>http://127.0.0.1:8081/repository/mymvn/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.alipay</groupId>
            <artifactId>sdk-java</artifactId>
            <version>20170829142630</version>
        </dependency>
    </dependencies>
</project>

5. 配置pom.xml,發(fā)布編譯的成果到hosted庫

<project>
...
    <repositories>
        <repository>
            <id>mymvn</id>
            <url>http://127.0.0.1:8081/repository/mymvn/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

pom.xml所在目錄運行下面命令,把自己開發(fā)的庫部署到hosted庫中,mvn會根據(jù)pom中的version屬性判斷發(fā)布的是release版還是snapshot版。

mvn deploy

6. 版本發(fā)布

每次發(fā)布的時候,需要修改pom.xml中的版本號,打包,測試,提交代碼,上傳jar文件到mvn庫。上述一系列動作,可以使用release的插件來自動完成。命令如下:

$ mvn release:prepare
...
[INFO] Working directory: /Users/menglj/workspace/qiyitech/pfw
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "pfw"? (cn.com.qiyitech:pfw) 0.4.0: : 
# maven會根據(jù)pom中的版本信息來發(fā)布,如果pom中寫的是`0.4.0-SNAPSHOT`,
# 則發(fā)布的版本為`0.4.0`。這里直接回車即可。
What is SCM release tag or label for "pfw"? (cn.com.qiyitech:pfw) pfw-0.4.0: : 
# tag名稱,默認即可
What is the new development version for "pfw"? (cn.com.qiyitech:pfw) 0.4.1-SNAPSHOT: : 
# 發(fā)布后,下一版本的版本號是多少,可以改為0.5.0-SNAPSHOT

命令執(zhí)行結束后,會把打包好的package上傳到pom中配置的maven庫中,修改pom.xml中相應版本號,并提交到版本庫中,打上相應的tag。

7. 配置maven鏡像

修改maven的settings.xml,增加如下字段:

<settings>
    <mirrors>
        <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
</settings>

如果自己搭建了私有庫,在鏡像中沒有私有庫中的內(nèi)容,則修改mirrorOf屬性[3],指明鏡像的庫ID即可,例如:

<mirrorOf>central</mirrorOf>

或者把不走鏡像的私有庫ID排除

<mirrorOf>*,!mymvn</mirrorOf>

參考文檔

  1. maven 安裝alipay-sdk包到本地及遠程倉庫
  2. maven使用Nexus私有倉庫進行管理
  3. maven repository mirrors
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • |-1-更新內(nèi)容[6.從倉庫解析依賴的機制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項目使用到構件,在ma...
    zlcook閱讀 6,457評論 0 25
  • 首先私服是一種衍生出來的特殊的Maven遠程倉庫,構建私服的好處請看3.5私服 可以幫助大家建立私服的倉庫管理軟件...
    zlcook閱讀 10,826評論 0 32
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,272評論 6 342
  • 第一天
    大健康大未來閱讀 153評論 0 0

友情鏈接更多精彩內(nèi)容