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/
,其他默認值即可。
2 配置public-repository:
將aliyun的repository排到最上面,如下圖: