日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Maven私服Nexus3.x環(huán)境構(gòu)建操作記錄

 EricThui 2019-05-25

Maven介紹
Apache Maven是一個(gè)創(chuàng)新的軟件項(xiàng)目管理和綜合工具。
Maven提供了一個(gè)基于項(xiàng)目對(duì)象模型(POM)文件的新概念來管理項(xiàng)目的構(gòu)建,可以從一個(gè)中心資料片管理項(xiàng)目構(gòu)建,報(bào)告和文件。
Maven最強(qiáng)大的功能就是能夠自動(dòng)下載項(xiàng)目依賴庫。
Maven提供了開發(fā)人員構(gòu)建一個(gè)完整的生命周期框架。開發(fā)團(tuán)隊(duì)可以自動(dòng)完成項(xiàng)目的基礎(chǔ)工具建設(shè),Maven使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和默認(rèn)構(gòu)建生命周期。
在多個(gè)開發(fā)團(tuán)隊(duì)環(huán)境時(shí),Maven可以設(shè)置按標(biāo)準(zhǔn)在非常短的時(shí)間里完成配置工作。由于大部分項(xiàng)目的設(shè)置都很簡(jiǎn)單,并且可重復(fù)使用,Maven讓開發(fā)人員的工作更輕松,同時(shí)創(chuàng)建報(bào)表,檢查,構(gòu)建和測(cè)試自動(dòng)化設(shè)置。
Maven項(xiàng)目的結(jié)構(gòu)和內(nèi)容在一個(gè)XML文件中聲明,pom.xml 項(xiàng)目對(duì)象模型(POM),這是整個(gè)Maven系統(tǒng)的基本單元。

Maven提供了開發(fā)人員的方式來管理:
1)Builds
2)Documentation
3)Reporting
4)Dependencies
5)SCMs
6)Releases
7)Distribution
8)mailing list
概括地說,Maven簡(jiǎn)化和標(biāo)準(zhǔn)化項(xiàng)目建設(shè)過程。處理編譯,分配,文檔,團(tuán)隊(duì)協(xié)作和其他任務(wù)的無縫連接。
Maven增加可重用性并負(fù)責(zé)建立相關(guān)的任務(wù)。
Maven最初設(shè)計(jì),是以簡(jiǎn)化Jakarta Turbine項(xiàng)目的建設(shè)。在幾個(gè)項(xiàng)目,每個(gè)項(xiàng)目包含了不同的Ant構(gòu)建文件。 JAR檢查到CVS。
Apache組織開發(fā)Maven可以建立多個(gè)項(xiàng)目,發(fā)布項(xiàng)目信息,項(xiàng)目部署,在幾個(gè)項(xiàng)目中JAR文件提供團(tuán)隊(duì)合作和幫助。

Maven主要目標(biāo)是提供給開發(fā)人員:
1)項(xiàng)目是可重復(fù)使用,易維護(hù),更容易理解的一個(gè)綜合模型。
2)插件或交互的工具,這種聲明性的模式。

私服介紹
私服是指私有服務(wù)器,是架設(shè)在局域網(wǎng)的一種特殊的遠(yuǎn)程倉(cāng)庫,目的是代理遠(yuǎn)程倉(cāng)庫及部署第三方構(gòu)建。有了私服之后,當(dāng) Maven 需要下載構(gòu)件時(shí),直接請(qǐng)求私服,私服上存在則下載到本地倉(cāng)庫;否則,私服請(qǐng)求外部的遠(yuǎn)程倉(cāng)庫,將構(gòu)件下載到私服,再提供給本地倉(cāng)庫下載。

Nexus介紹
Nexus是一個(gè)強(qiáng)大的Maven倉(cāng)庫管理器,它極大地簡(jiǎn)化了本地內(nèi)部倉(cāng)庫的維護(hù)和外部倉(cāng)庫的訪問。
如果使用了公共的Maven倉(cāng)庫服務(wù)器,可以從Maven中央倉(cāng)庫下載所需要的構(gòu)件(Artifact),但這通常不是一個(gè)好的做法。
正常做法是在本地架設(shè)一個(gè)Maven倉(cāng)庫服務(wù)器,即利用Nexus私服可以只在一個(gè)地方就能夠完全控制訪問和部署在你所維護(hù)倉(cāng)庫中的每個(gè)Artifact。
Nexus在代理遠(yuǎn)程倉(cāng)庫的同時(shí)維護(hù)本地倉(cāng)庫,以降低中央倉(cāng)庫的負(fù)荷,節(jié)省外網(wǎng)帶寬和時(shí)間,Nexus私服就可以滿足這樣的需要。
Nexus是一套“開箱即用”的系統(tǒng)不需要數(shù)據(jù)庫,它使用文件系統(tǒng)加Lucene來組織數(shù)據(jù)。
Nexus使用ExtJS來開發(fā)界面,利用Restlet來提供完整的REST APIs,通過m2eclipse與Eclipse集成使用。
Nexus支持WebDAV與LDAP安全身份認(rèn)證。
Nexus還提供了強(qiáng)大的倉(cāng)庫管理功能,構(gòu)件搜索功能,它基于REST,友好的UI是一個(gè)extjs的REST客戶端,它占用較少的內(nèi)存,基于簡(jiǎn)單文件系統(tǒng)而非數(shù)據(jù)庫。

為什么要構(gòu)建Nexus私服?
如果沒有Nexus私服,我們所需的所有構(gòu)件都需要通過maven的中央倉(cāng)庫和第三方的Maven倉(cāng)庫下載到本地,而一個(gè)團(tuán)隊(duì)中的所有人都重復(fù)的從maven倉(cāng)庫下載構(gòu)件無疑加大了倉(cāng)庫的負(fù)載和浪費(fèi)了外網(wǎng)帶寬,如果網(wǎng)速慢的話,還會(huì)影響項(xiàng)目的進(jìn)程。很多情況下項(xiàng)目的開發(fā)都是在內(nèi)網(wǎng)進(jìn)行的,連接不到maven倉(cāng)庫怎么辦呢?開發(fā)的公共構(gòu)件怎么讓其它項(xiàng)目使用?這個(gè)時(shí)候我們不得不為自己的團(tuán)隊(duì)搭建屬于自己的maven私服,這樣既節(jié)省了網(wǎng)絡(luò)帶寬也會(huì)加速項(xiàng)目搭建的進(jìn)程,當(dāng)然前提條件就是你的私服中擁有項(xiàng)目所需的所有構(gòu)件。

總之,在本地構(gòu)建nexus私服的好處有:
1)加速構(gòu)建;
2)節(jié)省帶寬;
3)節(jié)省中央maven倉(cāng)庫的帶寬;
4)穩(wěn)定(應(yīng)付一旦中央服務(wù)器出問題的情況);
5)控制和審計(jì);
6)能夠部署第三方構(gòu)件;
7)可以建立本地內(nèi)部倉(cāng)庫;
8)可以建立公共倉(cāng)庫
這些優(yōu)點(diǎn)使得Nexus日趨成為最流行的Maven倉(cāng)庫管理器。

Maven的安裝
下載地址:http://maven./download.cgi
提前在服務(wù)器上安裝jdk環(huán)境(參考:Centos中yum方式安裝java
[root@master-node ~]# cd /usr/local/src/
[root@master-node src]# wget http://mirrors./apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
[root@master-node src]# tar -zvxf apache-maven-3.3.9-bin.tar.gz
[root@master-node src]# mv apache-maven-3.3.9 /usr/local/maven

接著配置系統(tǒng)環(huán)境變量,在/etc/profile文件底部添加如下內(nèi)容:
[root@master-node src]# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)
[root@master-node src]# vim /etc/profile
.....
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk                                //java的環(huán)境變量設(shè)置
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

export MAVEN_HOME=/usr/local/maven                                                 //maven的環(huán)境變量設(shè)置
export PATH=$PATH:$MAVEN_HOME/bin
[root@master-node src]# source /etc/profile

最后驗(yàn)證是否安裝成功,出現(xiàn)如下信息,說明安裝成功
[root@master-node src]# mvn --version                   # 最好按照java jdk
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"

Nexus安裝
Nexus的安裝有兩種實(shí)現(xiàn)方式:
1)war包安裝方式
下載地址:https://sonatype-download.global.ssl./nexus/oss/nexus-2.14.2-01.war
直接將war包放在tomcat的根目錄下,啟動(dòng)tomcat就可以用了

2)源碼安裝方式(之前在用的是2.14.4版本,這里是新版本)
下載地址:https://www./download-oss-sonatype           (云盤下載:http://pan.baidu.com/s/1miKFm5a
[root@master-node ~]# cd /usr/local/src/
[root@master-node src]# wget https://sonatype-download.global.ssl./nexus/3/nexus-3.2.0-01-unix.tar.gz
[root@master-node src]# tar -zvxf nexus-3.2.0-01-unix.tar.gz
[root@master-node src]# mv nexus-3.2.0-01 /usr/local/nexus

啟動(dòng)nexus(默認(rèn)端口是8081)
[root@master-node src]# /usr/local/nexus/bin/nexus
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Usage: /usr/local/nexus/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}
[root@master-node src]# /usr/local/nexus/bin/nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus
上面在啟動(dòng)過程中出現(xiàn)告警:不推薦使用root用戶啟動(dòng)。這個(gè)告警不影響nexus的正常訪問和使用。
去掉上面WARNING的辦法:
[root@master-node src]# vim /etc/profile
......
export RUN_AS_USER=root
[root@master-node src]# source /etc/profile
[root@master-node src]# lsof -i:8081            //nexus服務(wù)啟動(dòng)成功后,需要稍等一段時(shí)間,8081端口才起來
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1486 root 859u IPv4 23504303 0t0 TCP *:tproxy (LISTEN)

在部署機(jī)上的iptables里打開8081端口
[root@master-node src]# vim /etc/sysconfig/iptables
....
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT
[root@master-node src]# /etc/init.d/iptables restart

訪問nexus,即http://localhost:8081    (如果出現(xiàn)404,就訪問http://localhost:8081/nexus)

出現(xiàn)上述頁面,說明配置nexus成功!
點(diǎn)擊右上角“Log in”,
輸入默認(rèn)用戶名(admin)和默認(rèn)密碼(admin123)登錄

可以點(diǎn)擊上面的“設(shè)置”圖標(biāo),在“設(shè)置”里可以添加用戶、角色,對(duì)接LDAP等的設(shè)置,如下:

可以在“管理”里查看nexus的系統(tǒng)信息

注意下面幾點(diǎn)說明:
1.component name的一些說明:
    1)maven-central:maven中央庫,默認(rèn)從https://repo1./maven2/拉取jar
    2)maven-releases:私庫發(fā)行版jar
    3)maven-snapshots:私庫快照(調(diào)試版本)jar
    4)maven-public:倉(cāng)庫分組,把上面三個(gè)倉(cāng)庫組合在一起對(duì)外提供服務(wù),在本地maven基礎(chǔ)配置settings.xml中使用。
2.Nexus默認(rèn)的倉(cāng)庫類型有以下四種:
    1)group(倉(cāng)庫組類型):又叫組倉(cāng)庫,用于方便開發(fā)人員自己設(shè)定的倉(cāng)庫;
    2)hosted(宿主類型):內(nèi)部項(xiàng)目的發(fā)布倉(cāng)庫(內(nèi)部開發(fā)人員,發(fā)布上去存放的倉(cāng)庫);
    3)proxy(代理類型):從遠(yuǎn)程中央倉(cāng)庫中尋找數(shù)據(jù)的倉(cāng)庫(可以點(diǎn)擊對(duì)應(yīng)的倉(cāng)庫的Configuration頁簽下Remote Storage Location屬性的值即被代理的遠(yuǎn)程倉(cāng)庫的路徑);
    4)virtual(虛擬類型):虛擬倉(cāng)庫(這個(gè)基本用不到,重點(diǎn)關(guān)注上面三個(gè)倉(cāng)庫的使用);
3.Policy(策略):表示該倉(cāng)庫為發(fā)布(Release)版本倉(cāng)庫還是快照(Snapshot)版本倉(cāng)庫;
4.Public Repositories下的倉(cāng)庫
   1)3rd party: 無法從公共倉(cāng)庫獲得的第三方發(fā)布版本的構(gòu)件倉(cāng)庫,即第三方依賴的倉(cāng)庫,這個(gè)數(shù)據(jù)通常是由內(nèi)部人員自行下載之后發(fā)布上去;
   2)Apache Snapshots: 用了代理ApacheMaven倉(cāng)庫快照版本的構(gòu)件倉(cāng)庫
   3)Central: 用來代理maven中央倉(cāng)庫中發(fā)布版本構(gòu)件的倉(cāng)庫
   4)Central M1 shadow: 用于提供中央倉(cāng)庫中M1格式的發(fā)布版本的構(gòu)件鏡像倉(cāng)庫
   5)Codehaus Snapshots: 用來代理CodehausMaven 倉(cāng)庫的快照版本構(gòu)件的倉(cāng)庫
   6)Releases: 內(nèi)部的模塊中release模塊的發(fā)布倉(cāng)庫,用來部署管理內(nèi)部的發(fā)布版本構(gòu)件的宿主類型倉(cāng)庫;release是發(fā)布版本;
   7)Snapshots:發(fā)布內(nèi)部的SNAPSHOT模塊的倉(cāng)庫,用來部署管理內(nèi)部的快照版本構(gòu)件的宿主類型倉(cāng)庫;snapshots是快照版本,也就是不穩(wěn)定版本
所以自定義構(gòu)建的倉(cāng)庫組代理倉(cāng)庫的順序?yàn)椋篟eleases,Snapshots,3rd party,Central。也可以使用oschina放到Central前面,下載包會(huì)更快。
5.Nexus默認(rèn)的端口是8081,可以在etc/nexus-default.properties配置中修改。
6.Nexus默認(rèn)的用戶名密碼是admin/admin123
7.當(dāng)遇到奇怪問題時(shí),重啟nexus,重啟后web界面要1分鐘左右后才能訪問。
8.Nexus的工作目錄是sonatype-work(路徑一般在nexus同級(jí)目錄下)
[root@master-node local]# pwd
/usr/local
[root@master-node local]# ls nexus/
bin deploy etc lib LICENSE.txt NOTICE.txt public system
[root@master-node local]# ls sonatype-work/
nexus3
[root@master-node local]# ls sonatype-work/nexus3/
backup blobs cache db elasticsearch etc generated-bundles health-check instances keystores lock log orient port tmp

Nexus倉(cāng)庫分類的概念:
1)Maven可直接從宿主倉(cāng)庫下載構(gòu)件,也可以從代理倉(cāng)庫下載構(gòu)件,而代理倉(cāng)庫間接的從遠(yuǎn)程倉(cāng)庫下載并緩存構(gòu)件
2)為了方便,Maven可以從倉(cāng)庫組下載構(gòu)件,而倉(cāng)庫組并沒有時(shí)間的內(nèi)容(下圖中用虛線表示,它會(huì)轉(zhuǎn)向包含的宿主倉(cāng)庫或者代理倉(cāng)庫獲得實(shí)際構(gòu)件的內(nèi)容).

 

Nexus的web界面功能介紹

1.Browse Server Content

1.1  Search
這個(gè)就是類似Maven倉(cāng)庫上的搜索功能,就是從私服上查找是否有哪些包。
注意:
1)在Search這級(jí)是支持模糊搜索的,如圖所示:

2)如果進(jìn)入具體的目錄,好像不支持模糊搜索,如圖所示:

1.2  Browse

1)Assets
這是能看到所有的資源,包含Jar,已經(jīng)對(duì)Jar的一些描述信息。
2)Components
這里只能看到Jar包。

2.Server Adminstration And configuration

看到這個(gè)選項(xiàng)的前提是要進(jìn)行登錄的,如上面已經(jīng)介紹登陸方法,右上角點(diǎn)擊“Sign In”的登錄按鈕,輸入admin/admin123,登錄成功之后,即可看到此功能,如圖所示:

2.1 Blob Stores
文件存儲(chǔ)的地方,創(chuàng)建一個(gè)目錄的話,對(duì)應(yīng)文件系統(tǒng)的一個(gè)目錄,如圖所示:

2.2 Repositories

1)Proxy
這里就是代理的意思,代理中央Maven倉(cāng)庫,當(dāng)PC訪問中央庫的時(shí)候,先通過Proxy下載到Nexus倉(cāng)庫,然后再?gòu)腘exus倉(cāng)庫下載到PC本地。
這樣的優(yōu)勢(shì)只要其中一個(gè)人從中央庫下來了,以后大家都是從Nexus私服上進(jìn)行下來,私服一般部署在內(nèi)網(wǎng),這樣大大節(jié)約的寬帶。
創(chuàng)建Proxy的具體步驟
1--點(diǎn)擊“Create Repositories”按鈕

2--選擇要?jiǎng)?chuàng)建的類型

3--填寫詳細(xì)信息
Name:就是為代理起個(gè)名字
Remote Storage: 代理的地址,Maven的地址為: https://repo1./maven2/
Blob Store: 選擇代理下載包的存放路徑

2)Hosted
Hosted是宿主機(jī)的意思,就是怎么把第三方的Jar放到私服上。
Hosted有三種方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已經(jīng)發(fā)布的Jar包
Snapshot: 未發(fā)布的版本
Mixed:混合的
Hosted的創(chuàng)建和Proxy是一致的,具體步驟和上面基本一致。如下:

注意事項(xiàng):
Deployment Pollcy: 需要把策略改成“Allow redeploy”。

3)Group
能把兩個(gè)倉(cāng)庫合成一個(gè)倉(cāng)庫來使用,目前沒使用過,所以沒做詳細(xì)的研究。

2.3 Security
這里主要是用戶、角色、權(quán)限的配置(上面已經(jīng)提到了在這里添加用戶和角色等)

2.4 Support
包含日志及數(shù)據(jù)分析。

2.5 System
主要是郵件服務(wù)器,調(diào)度的設(shè)置地方
這部分主要講怎么和Maven做集成,集成的方式主要分以下種情況:代理中央倉(cāng)庫、Snapshot包的管理、Release包的管理、第三方Jar上傳到Nexus上。

代理中央倉(cāng)庫
只要在PMO文件中配置私服的地址(比如http://192.168.1.14:8081)即可,配置如下:

<repositories>
        <repository>
            <id>maven-central</id>
            <name>maven-central</name>
            <url>http://192.168.1.14:8081/repository/maven-central/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

Snapshot包的管理
1)修改Maven的settings.xml文件,加入認(rèn)證機(jī)制

<servers>
<server>
      <id>nexus</id>
      <username>admin</username>
      <password>admin123</password>
     </server>

2)修改工程的Pom文件

<distributionManagement>
        <snapshotRepository>
            <id>nexus</id>
            <name>Nexus Snapshot</name>
            <url>http://192.168.1.14:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
        <site>
            <id>nexus</id>
            <name>Nexus Sites</name>
            <url>dav:http://192.168.1.14:8081/repository/maven-snapshots/</url>
        </site>
    </distributionManagement>

注意事項(xiàng):

上面修改的Pom文件如截圖中的名字要跟/usr/local/maven/conf/settings.xml文件中的名字一定要對(duì)應(yīng)上。

3)上傳到Nexus上

1--項(xiàng)目編譯成的jar是Snapshot(POM文件的頭部)

<groupId>com.woasis</groupId>
<artifactId>test-nexus</artifactId>
<version>1.0.0-<span style="color: #ff0000;">SHAPSHOT</span></version>
<packaging>jar</packaging>

2--使用mvn deploy命令運(yùn)行即可(運(yùn)行結(jié)果在此略過)

3--因?yàn)镾napshot是快照版本,默認(rèn)他每次會(huì)把Jar加一個(gè)時(shí)間戳,做為歷史備份版本。

Releases包的管理

1)與Snapshot大同小異,只是上傳到私服上的Jar包不會(huì)自動(dòng)帶時(shí)間戳
2)與Snapshot配置不同的地方,就是工程的PMO文件,加入repository配置

<distributionManagement>
        <repository>
            <id>nexus</id>
            <name>Nexus Snapshot</name>
            <url>http://192.168.1.14:8081/repository/maven-releases/</url>
        </repository>

3)打包的時(shí)候需要把Snapshot去掉

<groupId>com.woasis</groupId>
    <artifactId>test-nexus</artifactId>
    <version>1.0.0</version>
<packaging>jar</packaging>

第三方Jar上傳到Nexus

[root@master-node src]# mvn deploy:deploy-file -DgroupId=org.jasig.cas.client -DartifactId=cas-client-core -Dversion=3.1.3 -Dpackag
注意事項(xiàng):
-DrepositoryId=nexus 對(duì)應(yīng)的就是Maven中settings.xml的認(rèn)證配的名字。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多