Nexus3安裝

1.Nexus3下載

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

2.啓動

cd nexus-3.6.0-02/bin
#前臺啓動服務
./nexus run
#在後臺啓動服務,不在界面上打印任何啓動或者運行時信息
./nexus start
#關閉服務
./nexus stop
#查看nexus運行狀態
./nexus status
#重啓服務
./nexus restart
#強制重載一遍配置文件,而後重啓服務
./nexus force-reload

3.訪問http://localhost:8081

默認用戶admin,密碼admin123html

4. Nexus的倉庫與倉庫組

4.1 倉庫類型

  1. maven-central:宿主倉庫主要用於存放項目部署的構件、或者第三方構件用於提供下載。
  2. proxy(代理):代理倉庫就是對遠程倉庫的一種代理,從遠程倉庫下載構件和插件而後緩存在Nexus倉庫中.
  3. group(倉庫組):對咱們已經配置完的倉庫的一種組合策略。

4.2 默認倉庫

  1. maven-central:代理中央倉庫、策略爲Release、只會下載和緩存中央倉庫中的發佈版本構件。
  2. maven-releases:策略爲Release的宿主倉庫、用來部署組織內部的發佈版本內容。
  3. maven-snapshots:策略爲Snapshot的宿主倉庫、用來部署組織內部的快照版本內容。
  4. maven-public:該倉庫組將maven-central,maven-releases與maven-snapshots倉庫聚合並經過一致的地址提供服務。
  5. nuget-hosted:用來部署nuget構件的宿主倉庫
  6. nuget.org-proxy:代理nuget遠程倉庫,下載和緩衝nuget構件。
  7. nuget-group:該倉庫組將nuget-hosted與nuget.org-proxy倉庫聚合並經過一致的地址提供服務。

5. 配置Maven從Nexus下載構件

    咱們能夠在項目的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

6. 使用Maven部署構件到Nexus

在項目正常開發中,快照版本的構件能夠部署到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

7. Nexus的訪問控制模型

Nexus是基於權限(Privilege)作訪問控制的。一個用戶能夠被賦予一個或者多個角色、一個角色能夠包含一個或者多個權限、還能夠包含一個或者多個角色。用戶必須擁有相應的角色繼而擁有相應權限、才能作相應操做,可是有一點要注意這裏的權限都是基於倉庫的,即對倉庫的增刪改查權限。ui

     在3.x版本中, Nexus只預約義了兩個重要的角色:url

  • nx-admin:擁有Nexus全部權限
  • nx-anonymous:匿名用戶角色,擁有訪問Nexus界面,瀏覽倉庫內容和搜索構件的功能。

7.1 添加snapshots可讀寫、其餘只讀用戶

  1. 建立角色nx-snap, 賦權nx-repository-view-*-*-browse、nx-repository-view-*-*-read、nx-repository-view-maven2-maven-snapshots-*
  2. 建立用戶snap,賦角色nx-snap

8. Nexus調度任務

    Nexus提供了一系列可配置的調度任務來方便用戶管理系統。用戶能夠設定這些任務運行的方式,例如天天、每週等。調度任務會在適當的時候在後臺運行。
    要創建一個調度任務,單擊左邊導航菜單中的「Scheduled Tasks」,而後再右邊的界面上單擊Add按鈕,按照頁面上的提示填寫相關內容。Nexus包含了如下幾種類型的調度任務:spa

  1. Download Indexs:爲代理倉庫下載遠程索引。
  2. Empty Trash:清空Nexus的回收站,一些操做實際是將文件移到了回收站中。
  3. Evict UnusedProxied Items From Repository Caches:刪除代理倉庫中長期未被使用的構件緩存。
  4. Expire RepositoryCache:Nexus爲代理倉庫維護了遠程倉庫的信息以免沒必要要的網絡流量,該任務清空這些信息以強制Nexus去從新獲取遠程倉庫的信息。
  5. Publish Indexs:將倉庫索引起布成可供m2eclipse和其餘Nexus使用的格式。
  6. Purge NexusTimeline:刪除Nexus的時間線文件,該文件用於創建系統的RSS源。
  7. Rebuild MavenMetadata Files:基於倉庫內容從新建立倉庫元數據文件maven-metadata.xml,同時從新建立每一個文件的校驗和md5與sha1。
  8. ReIndex Repositories:爲倉庫編纂索引。
  9. Remove SnapshotsFrom Repositories:以可配置的方式刪除倉庫的快照構件。

nexus3官網文檔

相關文章
相關標籤/搜索