wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.6.0-02-unix.tar.gz tar xzvf nexus-3.6.0-02-unix.tar.gz
cd nexus-3.6.0-02/bin #前臺啓動服務 ./nexus run #在後臺啓動服務,不在界面上打印任何啓動或者運行時信息 ./nexus start #關閉服務 ./nexus stop #查看nexus運行狀態 ./nexus status #重啓服務 ./nexus restart #強制重載一遍配置文件,而後重啓服務 ./nexus force-reload
默認用戶admin,密碼admin123html
咱們能夠在項目的POM中配置倉庫和插件倉庫,固然若是咱們想要全部的Maven項目都使用私服,能夠在settings.xml中配置,可是settings.xml並不直接支持配置repositories和pluginRepositories,可是Maven提供了profiles下的profile可讓咱們定義一系列的配置信息,而後指定其激活條件,可以定義在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定義在<properties>裏面的鍵值對能夠在pom.xml中使用,這裏咱們配置遠程倉庫的地址和插件倉庫。緩存
<profiles> <profile> <id>gpcmarket</id> <repositories> <repository> <id>gpcmarket</id> <name>gpcmarket private nexus</name> <url>http://ip:port/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>gpcmarket</id> <name>gpcmarket private nexus</name> <url>http://ip:port/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> </profiles> <activeProfiles> <activeProfile>gpcmarket</activeProfile> </activeProfiles>
可是Maven除了從Nexus上下載構件以外,還會時不時從中央倉庫下載構件,然而這應該是Nexus的工做,因此咱們須要配置一個鏡像,用<mirrorof>*</mirrorof>將Maven任何構件下載的請求都轉發到私服中。安全
<mirrors> <mirror> <id>gpcmarket-public</id> <name>gpcmarket-public</name> <url>http://ip:port/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
這裏就有一個問題,在這裏配置了鏡像,那在<profiles>裏配置的遠程倉庫不是沒有用了嗎?當Maven須要下載發佈版或者快照版構件的時候,他會首先檢查咱們配置的遠程倉庫中的<releases>和<snapshots>元素,看該類型的構件是否能夠下載,若是能夠下載,就轉到鏡像地址去下載。因此咱們配置的遠程倉庫中的<url>失效了,有效的是<releases>和<snapshots>元素。bash
在項目正常開發中,快照版本的構件能夠部署到Nexus中策略爲Snapshot的例如:maven-snapshots宿主倉庫中,發佈版本能夠部署到Nexus中策略爲Release的例如:maven-releases宿主倉庫中,項目的POM文件配置以下:網絡
<distributionManagement> <repository> <id>gpcmarket-releases</id> <url>http://ip:port/nexus/repositories/releases/</url> </repository> <snapshotRepository> <id>gpcmarket-snapshots</id> <url>http://ip:port/nexus/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
可是Nexus倉庫對於匿名用戶是隻讀的,因此爲了可以部署構件,還須要在settings.xml文件中配置認證信息。eclipse
<servers> <server> <id>gpcmarket-releases</id> <username>user</username> <password>pwd</password> </server> <server> <id>gpcmarket-snapshots</id> <username>user</username> <password>pwd</password> </server> </servers>
固然對於一些因爲許可證因素等沒法發佈到公共倉庫的構件,咱們只能本身下載而後經過Nexus的界面手動上傳到私服中。
到此爲止,Nexus私服的搭建與配置基本完畢,下面是關於權限管理的問題。
出於安全性考慮、須要對Nexus倉庫進行權限管理、好比只有管理員才能配置Nexus、某個項目組有特定的倉庫、等等。maven
Nexus是基於權限(Privilege)作訪問控制的。一個用戶能夠被賦予一個或者多個角色、一個角色能夠包含一個或者多個權限、還能夠包含一個或者多個角色。用戶必須擁有相應的角色繼而擁有相應權限、才能作相應操做,可是有一點要注意這裏的權限都是基於倉庫的,即對倉庫的增刪改查權限。ui
在3.x版本中, Nexus只預約義了兩個重要的角色:url
Nexus提供了一系列可配置的調度任務來方便用戶管理系統。用戶能夠設定這些任務運行的方式,例如天天、每週等。調度任務會在適當的時候在後臺運行。
要創建一個調度任務,單擊左邊導航菜單中的「Scheduled Tasks」,而後再右邊的界面上單擊Add按鈕,按照頁面上的提示填寫相關內容。Nexus包含了如下幾種類型的調度任務:spa