2019-05-08-idea+maven私服-配置nexus


name: 97年的頑石
avatar: /images/husky.png
home: ‘https://tanghao.fun/
authorDesc: 一條鹹魚罷了
categories: 科技
tags:

  • nexus
    title: idea+maven私服-配置nexus
    date: 2019-05-08 12:50:34
    keywords:
    description: 暫無概述

mirror和repository的區別 概念在文章 → Maven:mirror和repository 區別 - bcombetter - 博客園(https://www.cnblogs.com/xingzc/p/9678984.html)


# 在項目中使用 Maven 私服**(Nexus)**

(使用時把aliyun配置在nexus裏,pom.xml和setting.xml只留私服)

# 配置認證信息+鏡像(Maven/conf/setting.xml)

(使用時把aliyun配置在nexus裏,pom.xml和setting.xml只留私服)

效果就是Maven的所有請求必須經過鏡像站點(Nexus);當Nexus出現問題後,那麼Maven將強制不可用。

    <mirror>

        <id>mirror-redirect2nexus</id>

        <!-- 此處配置所有的構建均從私有倉庫中下載,*代表所有,也可以寫成central -->

        <!-- <mirrorOf>*</mirrorOf> -->

        <!-- <mirrorOf>nexus</mirrorOf> -->

        <mirrorOf>*</mirrorOf>

        <name>Nexus osc</name>

        <url>http://192.168.213.135:8081/repository/maven-public/</url>

    </mirror>



<server>

  <id>nexus-releases</id>

  <username>admin</username>

  <password>admin123</password>

</server>

<server>

  <id>nexus-snapshots</id>

  <username>admin</username>

  <password>admin123</password>

</server>

# Snapshots 與 Releases 的區別

  • nexus-releases: 用於發佈 Release 版本
  • nexus-snapshots: 用於發佈 Snapshot 版本(快照版)

Release 版本與 Snapshot 定義如下:

Release: 1.0.0/1.0.0-RELEASE

Snapshot: 1.0.0-SNAPSHOT

  • 在項目 pom.xml 中設置的版本號添加 SNAPSHOT 標識的都會發布爲 SNAPSHOT 版本,沒有 SNAPSHOT 標識的都會發布爲 RELEASE 版本。
  • SNAPSHOT 版本會自動加一個時間作爲標識,如:1.0.0-SNAPSHOT 發佈後爲變成 1.0.0-SNAPSHOT-20180522.123456-1.jar

# 配置自動化部署(IDEA pom.xml部分)

在(IDEA)pom.xml 中添加如下代碼:

<distributionManagement>  

  <repository>  

    <id>nexus-releases</id>  

    <name>Nexus Release Repository</name>  

    <url>http://192.168.213.135:8081/repository/maven-releases/</url>  

  </repository>  

  <snapshotRepository>  

    <id>nexus-snapshots</id>  

    <name>Nexus Snapshot Repository</name>  

    <url>http://192.168.213.135:8081/repository/maven-snapshots/</url>  

  </snapshotRepository>  

</distributionManagement>

注意事項:

  • ID 名稱必須要與 settings.xml 中 Servers 配置的 ID 名稱保持一致。
  • 項目版本號中有 SNAPSHOT 標識的,會發布到 Nexus Snapshots Repository, 否則發佈到 Nexus Release Repository,並根據 ID 去匹配授權賬號。

# 部署到倉庫

mvn deploy

# 上傳第三方 JAR 包

Nexus 3.0 不支持頁面上傳,可使用 maven 命令:

# 如第三方JAR包:aliyun-sdk-oss-2.2.3.jar

mvn deploy:deploy-file

  -DgroupId=com.aliyun.oss

  -DartifactId=aliyun-sdk-oss

  -Dversion=2.2.3

  -Dpackaging=jar

  -Dfile=D:\aliyun-sdk-oss-2.2.3.jar

  -Durl=http://127.0.0.1:8081/repository/maven-3rd/

  -DrepositoryId=nexus-releases

注意事項:

  • 建議在上傳第三方 JAR 包時,創建單獨的第三方 JAR 包管理倉庫,便於管理有維護。(maven-3rd)
  • -DrepositoryId=nexus-releases 對應的是 settings.xml 中 Servers 配置的 ID 名稱。(授權)

# 配置代理倉庫**(IDEA pom.xml部分)**

(使用時把aliyun配置在nexus裏,pom.xml和setting.xml只留私服)

<repositories>

    <repository>

        <id>nexus</id>

        <name>Nexus Repository</name>

        <url>http://192.168.213.135:8081/repository/maven-public/</url>

        <snapshots>

            <enabled>true</enabled>

        </snapshots>

        <releases>

            <enabled>true</enabled>

        </releases>

    </repository>

</repositories>

<pluginRepositories>

    <pluginRepository>

        <id>nexus</id>

        <name>Nexus Plugin Repository</name>

        <url>http://192.168.213.135:8081/repository/maven-public/</url>

        <snapshots>

            <enabled>true</enabled>

        </snapshots>

        <releases>

            <enabled>true</enabled>

        </releases>

    </pluginRepository>

</pluginRepositories>


# Nexus添加阿里雲倉庫(http://192.168.213.135:8081 登陸並設置**):**

(使用時把aliyun配置在nexus裏,pom.xml和setting.xml只留私服)

    把一下都配上,並設置maven-public 調整到 maven-release/public/centrol 之前.(範例在代碼最下方)
setting.xml

    <mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

        <mirrorOf>central</mirrorOf>

    </mirror>

    <mirror>

        <id>central</id>

        <name>Maven Repository Switchboard</name>

        <url>http://repo1.maven.org/maven2/</url>

        <mirrorOf>central</mirrorOf>

    </mirror>

    <mirror>

        <id>repo2</id>

        <mirrorOf>central</mirrorOf>

        <name>Human Readable Name for this Mirror.</name>

        <url>http://repo2.maven.org/maven2/</url>

    </mirror>

    <mirror>

        <id>ibiblio</id>

        <mirrorOf>central</mirrorOf>

        <name>Human Readable Name for this Mirror.</name>

        <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>

    </mirror>

    <mirror>

        <id>jboss-public-repository-group</id>

        <mirrorOf>central</mirrorOf>

        <name>JBoss Public Repository Group</name>

        <url>http://repository.jboss.org/nexus/content/groups/public</url>

    </mirror>

    <!-- 中央倉庫在中國的鏡像 -->

    <mirror>

        <id>maven.net.cn</id>

        <name>oneof the central mirrors in china</name>

        <url>http://maven.net.cn/content/groups/public/</url>

        <mirrorOf>central</mirrorOf>

    </mirror>



pom.xml

    <repositories>

        <repository>

            <id>aliyun-repos</id>

            <name>Aliyun Repository</name>

            <url>http://maven.aliyun.com/nexus/content/groups/public</url>

            <releases>

                <enabled>true</enabled>

            </releases>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </repository>

    </repositories>

    <pluginRepositories>

        <pluginRepository>

            <id>aliyun-repos</id>

            <name>Aliyun Repository</name>

            <url>http://maven.aliyun.com/nexus/content/groups/public</url>

            <releases>

                <enabled>true</enabled>

            </releases>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </pluginRepository>

    </pluginRepositories>

範例: 如下圖,點擊 Repositories → Create repository → maven2 proxy

取名: aliyun-repository

URL:http://maven.aliyun.com/nexus/content/groups/public/,其他默認值即可。

1
2 配置public-repository:
2
將aliyun的repository排到最上面,如下圖:
3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章