1. 程式人生 > >maven私服nexus3.x環境配置

maven私服nexus3.x環境配置

私服是指私有伺服器,是架設在區域網的一種特殊的遠端倉庫,目的是代理遠端倉庫及部署第三方構建。 有了私服之後,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫; 否則,私服請求外部的遠端倉庫,將構件下載到私服,再提供給本地倉庫下載。

Nexus是一個強大的Maven倉庫管理器,它極大地簡化了本地內部倉庫的維護和外部倉庫的訪問。 如果使用了公共的Maven倉庫伺服器,可以從Maven中央倉庫下載所需要的構件(Artifact),但這通常不是一個好的做法。 正常做法是在本地架設一個本地Maven倉庫伺服器,利用Nexus私服可以只在一個地方就能夠完全控制訪問和部署在你所維護倉庫中的每個Artifact。

Nexus優點

為什麼要構建Nexus私服?好處我隨便列幾點:

  • Nexus在代理遠端倉庫的同時維護本地倉庫,以降低中央倉庫的負荷,節省外網頻寬和時間,Nexus私服就可以滿足這樣的需要。
  • Nexus是一套“開箱即用”的系統不需要資料庫,它使用檔案系統加Lucene來組織資料。
  • Nexus使用ExtJS來開發介面,利用Restlet來提供完整的REST APIs,並能通過外掛和各種IDE整合。
  • Nexus支援WebDAV與LDAP安全身份認證。
  • Nexus還提供了強大的倉庫管理功能,構件搜尋功能,它基於REST,提供友好的UI,佔用較少的記憶體,基於簡單檔案系統而非資料庫。

安裝

我的環境是centos7.2 + JDK8 + Maven3,首先需要安裝 JDK8 和 Maven3,這裡不多講。

下載檔案nexus-3.6.0-02-unix.tar.gz,解壓縮。

1
2
3
tar zxf nexus-3.6.0-02-unix.tar.gz -C /usr/local/
cd /usr/local/
mv nexus-3.6.0-02/ nexus

啟動:

1
./nexus/bin/nexus start

預設埠8081,如果開了防火牆,就把這個埠放開:

1
firewall-cmd --zone=public --add-port=8081/tcp --permanent

啟動之後,執行命令lsof -i:8081可檢視是否成功啟動了。

Nexus預設的埠是8081,可以在etc/nexus-default.properties配置中修改。

Nexus預設的使用者名稱密碼是admin/admin123

當遇到奇怪問題時,重啟nexus,重啟後web介面要1分鐘左右後才能訪問。

Nexus的工作目錄是sonatype-work(路徑一般在nexus同級目錄下),日誌檔案也在這裡。

1
2
3
ls sonatype-work/nexus3/
backup  blobs  cache  db  elasticsearch  etc  generated-bundles  
health-check  instances  keystores  lock  log  orient  port  tmp

使用預設的管理員admin/admin123登入,進入管理介面:

使用者和角色

可以點選上面的“設定”圖示,在“設定”裡可以新增使用者、角色,對接LDAP等的設定。

倉庫

最核心的是倉庫管理

預設的這幾個倉庫我解釋一下:

  1. maven-releases:私庫發行版jar,初次安裝請將Deployment policy設定為Allow redeploy
  2. maven-snapshots:私庫快照(除錯版本)jar
  3. maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml中使用。

Nexus預設的倉庫型別有以下四種:

  1. group(倉庫組型別):又叫組倉庫,用於方便開發人員自己設定的倉庫;
  2. hosted(宿主型別):內部專案的釋出倉庫(內部開發人員,釋出上去存放的倉庫);
  3. proxy(代理型別):從遠端中央倉庫中尋找資料的倉庫(可以點選對應的倉庫的Configuration頁簽下Remote Storage屬性的值即被代理的遠端倉庫的路徑);
  4. virtual(虛擬型別):虛擬倉庫(這個基本用不到,重點關注上面三個倉庫的使用);

Policy(策略): 表示該倉庫為釋出(Release)版本倉庫還是快照(Snapshot)版本倉庫;

由於訪問中央倉庫有時候會比較慢,這裡我新增一個阿里雲的代理倉庫,然後優先順序放到預設中央庫之前,, 阿里雲的maven倉庫url為http://maven.aliyun.com/nexus/content/groups/public

然後再public組裡面講這個aliyun-proxy倉庫加入,排在maven-central之前即可。

Nexus倉庫分類的概念

1)Maven可直接從宿主倉庫下載構件,也可以從代理倉庫下載構件,而代理倉庫間接的從遠端倉庫下載並快取構件

2)為了方便,Maven可以從倉庫組下載構件,而倉庫組並沒有時間的內容(下圖中用虛線表示,它會轉向包含的宿主倉庫或者代理倉庫獲得實際構件的內容)

Nexus的排程任務

預設安裝好之後是沒有索引和jar檔案的,因為你要自己定義任務去執行。

Nexus提供了一系列可配置的排程任務來方便使用者管理系統。使用者可以設定這些任務執行的方式,例如每天、每週等。排程任務會在適當的時候在後臺執行。

要建立一個排程任務,單擊左邊導航選單中的Tasks,點選Create Task,然後選擇一個任務型別。

以下幾種常用型別的排程任務:

  • Execute script:執行自定義指令碼
  • Purge開頭:清理一些不使用的資源。
  • Rebuild repository index:為倉庫重新編纂索引,從遠倉庫下載最新的索引。
  • Rebuild Maven repository metadata:基於倉庫內容重新建立倉庫元資料檔案,同時重新建立每個檔案的校驗和md5與sha1。
  • Remove snapshots from Maven repository:把快照刪了,這個是在穩定版釋出後清除

比如我新建一個重構索引的任務,然後選擇aliyun倉庫,讓它把遠端索引取下來,手動執行。不過最好別這樣做,因為需要很大的硬碟空間。

最好是讓它自己去維護,請求一個依賴的時候如果私服沒有會自動去遠倉庫取的。

Nexus搜尋頁

這個不需要登入就可以訪問,用來查詢jar包。支援模糊查詢

Blob Stores

檔案儲存的地方,建立一個目錄的話,對應檔案系統的一個目錄,可供倉庫上傳檔案使用,如圖所示:

本地Maven使用私服

安裝和配置好之後,在開發中如何使用呢。可在maven的預設配置settings.xml中修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<servers>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

<mirrors>
    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>http://123.207.66.156:8081/repository/maven-public/</url>
    </mirror>
</mirrors>

<profiles>
    <profile>  
      <id>dev</id>
      <repositories>
        <repository>
          <id>Nexus</id>
          <url>http://123.207.66.156:8081/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

如果要釋出自己的jar到私服,就需要修改工程的pom.xml,新增如下內容,否則什麼都不用做:

1
2
3
4
5
6
7
8
9
10
11
12
<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Releases</name>
        <url>http://123.207.66.156:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>Snapshot</name>
        <url>http://123.207.66.156:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注意上面的repository的id值一定要跟settings.xml檔案中配置的server一致。

上傳到Nexus上,使用 mvn deploy 即可,開發的時候請使用snapshot版本,也就是version的字尾必須是-SNAPSHOT

1
2
3
4
<groupId>com.enzhico</groupId>
<artifactId>micro-pay-sdk</artifactId>
<version>1.2-SNAPSHOT</version>
<packaging>jar</packaging>

上次成功後再去私服倉庫查詢快照版發現已經成功上傳:

第三方Jar上傳到Nexus

1
2
3
4
5
6
7
8
mvn deploy:deploy-file \
    -DgroupId=<group-id> \
    -DartifactId=<artifact-id> \
    -Dversion=<version> \
    -Dpackaging=<type-of-packaging> \
    -Dfile=<path-to-file> \
    -DrepositoryId=<server-id-settings.xml> \
    -Durl=<url-of-the-repository-to-deploy>

-DrepositoryId的值即為在setttings.xml裡面配置的server id。

釋出原始碼和文件

如果你還想釋出原始碼和javadoc,那麼需要使用maven外掛,我把外掛配置列出來:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.4</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <aggregate>true</aggregate>
                <charset>UTF-8</charset>
                <docencoding>UTF-8</docencoding>
            </configuration>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <executions>
                <execution>
                    <id>deploy</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

釋出javadoc的時候,每個方法註釋必須遵循規範,比如引數、返回值、異常都應該有說明。

打包或釋出的時候如果想跳過測試,加一個引數:

1
mvn clean && mvn deploy -DskipTests=true

相關推薦

mavennexus3.x環境配置

私服是指私有伺服器,是架設在區域網的一種特殊的遠端倉庫,目的是代理遠端倉庫及部署第三方構建。 有了私服之後,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫; 否則,私服請求外部的遠端倉庫,將構件下載到私服,再提供給本地倉庫下載。Nexus是一個強大的Maven倉庫管理器,它極大地簡化

MavenNexus3.x環境構建操作記錄

size amd64 uri 進入 apache ack 報表 目錄結構 jdk Maven介紹Apache Maven是一個創新的軟件項目管理和綜合工具。Maven提供了一個基於項目對象模型(POM)文件的新概念來管理項目的構建,可以從一個中心資料片管理項目構建,報告和文

Docker環境搭建 - Docker安裝MavenNexus3

Docker 安裝 Nexus3 及配置 環境 在 Centos7 的虛擬機器上進行安裝,虛擬機器 IP 為 192.168.247.129 安裝 拉取映象 docker pull sonatype/nexus3 檢視映象 docker images

maven Nexus2.x.x安裝配置

oca 快照 ots win settings 系統 arch 關閉 sonatype 一、Nexus的下載和安裝 1、下載nexus ,下載地址:https://www.sonatype.com/download-oss-sonatype 2、打開目錄nex

mavennexus3上傳jar包報錯問題(解決辦法)

1.maven私服nexus3上傳jar包報錯如下: C:\Users\zheng>mvn deploy:deploy-file -DgroupId=org.jeewx -DartifactId=jeewx-api -Dversion=1.1-SNAPS

maven禁用匿名訪問配置

2. 建立新使用者 3.在maven的setting.xml中配置新使用者賬號密碼 <server>         <id>public</id>  

mavennexus3搭建和使用

1.搭建過程 環境說明:oracle JDK 1.8  Maven 3.5  Windows 2008 64位 nexus下載 配置nexus 啟動nexus  命令 nexus /run 2.使用教程 nexus訪問地址:http://x.x.x.x:9081/ mav

群暉DS218+做maven(nexus3)

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ###

maven將本地jar及第三方jar釋出到nexus3中的相關配置

一:安裝nexus3 略 二:在nexus3上建立倉庫 nexus3預設會有七八個倉庫,我把這些都刪掉了,然後建立自己的倉庫,如下圖所示: dzsoft_releases是宿主倉庫,放置上傳的本地jar和第三方jar的釋出版本; dzsoft_snapshot是

Windows環境使用Nexus-3.x搭建Maven

[前言] 本文主要講解在Wiindows環境下搭建最新出的Nexus 3.x私服。 1、搭建私服的必要性 一般情況下,各個公司的開發團隊為了提高開發效率,都會使用專案構建工具進行開發。常見的構建工具有Ant、Grandle和Maven等。而使用構建工具,一般情況下都需要管理

搭建nexus3版的maven(Centos7環境)

1.安裝jdk1.8 2.安裝maven 3.安裝nexus3 1.下載nexus-3.6.0-02-unix.tar.gz 2.解壓 [root@MiWiFi-R3-srv ~]# tar -zxvf nexus-3.

Maven 配置

pan eas white snapshot 認證 str sta XML posit 1.下載nexus   nexus https://help.sonatype.com/display/NXRM3/Download 2.配置環境變量   export PATH=$P

maven配置

http 文件中 compiler ont 設置 oca 需要 發布 密碼 環境: eclipse 、maven、nexus。 1、配置setting.xml文件   1.1、配置本地倉庫位置:文件中,存在節點 “localRepository”,默認是註釋,也就是本地倉

Windows7下通過Nexus3.13搭建Maven

前在一個公司使用過Nexus,那時還不知道這個是個什麼玩意,最近公司要搭建自己的maven庫,才知道以前用的東西叫nexus,日企的鍋,我不背~。~。 本教程基於win7和Nexus3.13版本,因為nexus2.x版本安裝下可能會有不同,不做其他解釋。 1.下載安裝Nexus 下載地址

Java 在Linux下使用nexus3搭建Maven並且使用Gradle進行jar包上傳以及依賴下載

今天我們來記錄一下如何通過Nexus3搭建Maven私服以及如何通過Gradle進行Jar包的上傳以及依賴使用 本人此次搭建教程使用的是Centos6.5,之前使用Centos7.3此安裝方法一樣適用,所以各版本的同學都可放心安裝。 1.Maven私服搭建 1.1

如何安裝Nexus Repository Manager OSS 3.x,如何搭建管理Maven,win10、win7通用安裝詳解,附:錯誤解決方案。

        今天搭建一個Maven私服花了不少功夫,查閱了很多安裝的帖子以及百度了很多錯誤解決方案,然後將所有的帖子精華部分,附上我的經驗來帶給大家一個特別詳細的安裝方案,所以該文章大部分可以說是總結別人帖子。話不多說,開始安裝: 1.下載 &nb

超詳細windows搭建安裝配置nexus教程--maven配置教程

  相信童鞋們知道nexus的肯定就知道maven這個東東了,maven的安裝教程我就不寫了,列位去找找別的教程吧,簡單的要死,這裡主要講解nexus的安裝教程, 1、先下載nexus,我使用的是war包,需要容器來執行的那種, 下載地址:https://sonatype-do

CentOS6.5 安裝Nexus配置Maven

1.下載Nexus的tar包,連結地址。注意,3.x版本需要JDK版本1.8及以上版本。2.建立安裝包存放目錄命令:mkdir -p /usr/local/src/installs3.rz或者ftp到伺服器目錄:/usr/local/src/installs4.解壓安裝包命令:tar -zxvf nexus-

liunx(centos7)搭建mavennexus3

一、相關網站: 二、相關知識:       1、倉庫可以歸分為3種,本地maven倉庫、私服、遠端倉庫(包含中央倉庫或者別的遠端倉庫,私服其實也算)       2、依賴的座標與路徑大致對應,如log4j/log4j/1.2.25/log4j-1.2.25.

使用Nexus3搭建Maven

  1.搭建Maven私服背景 公司還是按捺不住,要搭建一個自己的Maven本地倉庫,可以讓開發人員down架包,從內網還是快很多。 這樣公司的maven本地倉庫就是 開發人員自己電腦上的maven倉庫  和    Maven遠端倉庫 &nbs