Linux下使用Nexus創(chuàng)建maven私服


軟件和安裝環(huán)境


1. 安裝nexus

  • 設(shè)置當(dāng)前用戶可以打開的文件總數(shù)為65536
[hadoop@jed etc]$ sudo vim /etc/security/limits.conf

#在文件中添加以下內(nèi)容,其中hadoop是用戶名
hadoop - nofile 65536
  • 解壓安裝包
    目錄說明:
bin: 包含nexus的啟動腳本以及啟動相關(guān)的配置文件芋齿,例如通過bin/nexus.vmoptions文件,你可以配置一些JVM參數(shù)和日志存放位置等配置
etc: 包含應(yīng)用級別的配置文件
lib: 包含 Apache Karaf 相關(guān)的jar包
public: 包含應(yīng)用相關(guān)的公共資源
system: 包含應(yīng)用相關(guān)的構(gòu)件和插件
  • 進(jìn)入bin目錄下饭于,啟動nexus
[hadoop@jed bin]$ ./nexus start
Starting nexus

# 使用 nexus run 也會啟動 nexus蘑险,區(qū)別在于:start以守護(hù)線程方式啟動拍埠,run以非守護(hù)線程方式啟動
  • 查看nexus狀態(tài)
[hadoop@jed bin]$ ./nexus status
nexus is running.
  • 訪問Web UI
http://ip:8081/

看到以上頁面說明 nexus 啟動正常。

其他命令說明:

# 重啟
nexus restart
# 強(qiáng)制重新刷新倉庫
nexus force-reload

2. 配置 nexus 以服務(wù)的形式啟動斗锭,并且開機(jī)自啟動

(0) 準(zhǔn)備工作

  • 關(guān)閉之前手動開啟的nexus進(jìn)程
[hadoop@jed bin]$ ./nexus stop
Shutting down nexus
Stopped.
  • 配置環(huán)境變量,添加NEXUS_HOME
[hadoop@jed nexus-3.13.0-01]$ vim ~/.bash_profile

export NEXUS_HOME=/opt/apps/nexus-3.13.0-01
export PATH=$PATH:$NEXUS_HOME/bin

[hadoop@jed nexus-3.13.0-01]$ source ~/.bash_profile
  • 修改$NEXUS_HOME/bin/nexus.rc
# 后面改為你自己的用戶名
run_as_user="hadoop"
  • 修改$NEXUS_HOME/bin/nexus
# 這一行是注釋的偿渡,釋放掉臼寄,后面寫JAVA_HOME的路徑
INSTALL4J_JAVA_HOME_OVERRIDE=/opt/apps/jdk1.8.0_172
  • 做一個$NEXUS_HOME/bin/nexus到/etc/init.d/nexus的軟連接
[hadoop@jed bin]$ sudo ln -s $NEXUS_HOME/bin/nexus /etc/init.d/nexus

(1) 方法一:使用chkconfig

cd /etc/init.d
## 添加nexus服務(wù)
sudo chkconfig --add nexus
## 設(shè)置在3、4溜宽、5這3個系統(tǒng)運行級別的時候自動開啟nexus服務(wù)
sudo chkconfig --levels 345 nexus on
## 啟動nexus服務(wù)
sudo service nexus start

關(guān)于系統(tǒng)運行級別以及chkconfig命令的用法參考Linux的運行級別和chkconfig用法

(2) 方法二:使用update-rc.d

cd /etc/init.d
sudo update-rc.d nexus defaults
sudo service nexus start

(3) 方法三:使用systemd(CentOS-7推薦使用)

# 在/etc/systemd/system/下新建文件nexus.service
[hadoop@jed nexus-3.13.0-01]$ touch /etc/systemd/system/nexus.service
# 編輯該文件脯厨,內(nèi)容如下(你可能需要適當(dāng)修改)
[hadoop@jed nexus-3.13.0-01]$ sudo vim /etc/systemd/system/nexus.service

[Unit]
Description=nexus service
After=network.target
 
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/apps/nexus-3.13.0-01/bin/nexus start
ExecStop=/opt/apps/nexus-3.13.0-01/bin/nexus stop
User=hadoop
Restart=on-abort
 
[Install]
WantedBy=multi-user.target

[hadoop@jed nexus-3.13.0-01]$ sudo systemctl daemon-reload
[hadoop@jed nexus-3.13.0-01]$ sudo systemctl enable nexus.service
[hadoop@jed nexus-3.13.0-01]$ sudo systemctl start nexus.service

3. Nexus倉庫的分類

Maven可以直接從宿主倉庫下載構(gòu)件,也可以從代理倉庫下載構(gòu)件坑质,代理倉庫會間接的從遠(yuǎn)程倉庫下載并緩存構(gòu)件合武,為了方便,maven也可以從倉庫組下載構(gòu)件涡扼,而倉庫組沒有實際內(nèi)容稼跳,它會轉(zhuǎn)向其包含的宿主倉庫或者代理倉庫獲得實際構(gòu)件的內(nèi)容。

登錄Nexus Web UI吃沪,管理員默認(rèn)賬戶密碼為admin/admin123

查看內(nèi)置的倉庫

nexus 3.13 自帶的部分倉庫的說明:

  • maven-central:代理倉庫汤善,該倉庫代理Maven中央倉庫,策略為release票彪,因此只會下載和緩存中央倉庫中的發(fā)布版本的構(gòu)件红淡。
  • maven-releases: 宿主倉庫,策略為release降铸,用來部署組織內(nèi)部的發(fā)布版本的構(gòu)件在旱。
  • maven-snapshots:宿主倉庫,策略為snapshots推掸,用來部署組織內(nèi)部的快照版本的構(gòu)件桶蝎。
  • maven-public:倉庫組,包含了以上3個倉庫

4. Nexus 操作

(1) 創(chuàng)建用戶

退出系統(tǒng)谅畅,用新創(chuàng)建的用戶登錄(賬戶hadoop/密碼hadoop)

(2) 創(chuàng)建宿主倉庫

(2) 創(chuàng)建代理倉庫

(3) 創(chuàng)建倉庫組

(4) 配置maven從Nexus下載構(gòu)件

pom如下:

<repositories>
    <repository>
        <id>nexus</id>
        <name>nexus</name>
        <url>http://jed:8081/repository/hadoop-test-repository-group/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>nexus</name>
        <url>http://jed:8081/repository/hadoop-test-repository-group/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

你可以從nexus頁面上獲得倉庫的url


在pom中的id登渣、name不需要與倉庫中的對應(yīng),但url一定要一樣毡泻,在pom中胜茧,多個倉庫的id一定是不同的,例如<repositories>下配置了多個倉庫仇味,那么這些倉庫的id一定要不同呻顽,但是<repositories>和<pluginRepositories>下可以共用一個倉庫。

以上配置只在當(dāng)前的項目中生效邪铲,如果想讓你本地的所有的maven項目都去自定義的私服下載構(gòu)件芬位,需要在settings.xml中配置如下:

<settings>
    <profiles>
        <profile>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <name>nexus</name>
                    <url>http://jed:8081/repository/hadoop-test-repository-group/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>nexus</name>
                    <url>http://jed:8081/repository/hadoop-test-repository-group/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    
    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>

在profile中配置的私服確實可以作用于本地所有的maven項目无拗,但是maven除了會去私服中下載構(gòu)件带到,也會去maven中央倉庫中下載,如果我們想要配置maven的下載請求僅僅通過nexus,以全面發(fā)揮私服的作用揽惹,這就需要在<mirror>級別添加配置了(在profile配置的基礎(chǔ)上再在mirror上添加配置)被饿,settings.xml中的內(nèi)容如下:

<mirrors>
    <mirror>
        <id>nexus</id>
        <url>http://jed:8081/repository/hadoop-test-repository-group/</url>
        <!-- * 代表這個私服可以作為所有遠(yuǎn)程倉庫的鏡像 -->
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

(5) 部署構(gòu)件到nexus

項目中的pom配置如下:

<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>nexus-releases</name>
        <url>http://jed:8081/repository/hadoop-hosted-test-repository/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshot</id>
        <name>nexus-snapshot</name>
        <url>http://jed:8081/repository/hadoop-hosted-test-repository-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

這里設(shè)置了兩個倉庫,一個用于部署發(fā)布版構(gòu)件搪搏,一個用于部署快照版構(gòu)件狭握,用于部署快照版構(gòu)件的倉庫我們在之前演示創(chuàng)建倉庫的時候沒有創(chuàng)建,你需要自己創(chuàng)建一個疯溺,另外無論是部署快照版構(gòu)件還是部署發(fā)布版構(gòu)件论颅,都是需要部署到宿主類型的倉庫中,而我們之前配置的下載構(gòu)件的倉庫是一個倉庫組囱嫩,這里需要注意一下恃疯。

另外,nexus倉庫對于匿名用戶是只讀的墨闲,所以還需要在settings.xml中配置認(rèn)證信息今妄,如下:

<servers>
    <server>
      <id>nexus-releases</id>
      <username>hadoop</username>
      <password>hadoop</password>
    </server>
    <server>
      <id>nexus-snapshot</id>
      <username>hadoop</username>
      <password>hadoop</password>
    </server>
</servers>

然后在項目根目錄下執(zhí)行maven命令mvn deploy即可,如果想在任意路徑下部署某個已經(jīng)打好的jar包鸳碧,完整的maven命令如下:

mvn deploy:deploy-file \
-DgroupId=your.group.id \
-DartifactId=your.artifact.id \
-Dversion=1.0.0 \
-Dpackaging=jar \
-Dfile=/path/to/your-jar-1.0.0.jar \
-Durl=http://ip:port/your/repository/url\ 
-DrepositoryId=yourRepositoryId

除了使用 maven 命令盾鳞,還可以使用nexus WEB 界面來手動上傳第三方j(luò)ar包:

image.png

(6) 為項目分配獨立的倉庫

  • 假設(shè)項目名稱為bonc,新建兩個宿主倉庫bonc-releases和bonc-snapshots分別用于部署bonc項目的發(fā)布版構(gòu)件和快照版構(gòu)件瞻离,過程不再贅述
  • 創(chuàng)建用于管理這兩個倉庫的權(quán)限(這里只演示為bonc-releases倉庫創(chuàng)建權(quán)限)
  • 創(chuàng)建一個角色bonc-role腾仅,添加這兩個權(quán)限
  • 創(chuàng)建一個用戶,賦予bonc-role角色
  • 在pom中配置部署構(gòu)件的倉庫
<distributionManagement>
    <repository>
        <id>bonc-releases</id>
        <name>bonc-releases</name>
        <url>http://jed:8081/repository/bonc-releases/</url>
    </repository>
    <snapshotRepository>
        <id>bonc-snapshots</id>
        <name>bonc-snapshots</name>
        <url>http://jed:8081/repository/bonc-snapshots/</url>
    </snapshotRepository>
</distributionManagement>
  • 在 settings.xml中配置認(rèn)證信息
<servers>
    <server>
      <id>bonc-releases</id>
      <username>bonc</username>
      <password>bonc</password>
    </server>
    <server>
      <id>bonc-snapshots</id>
      <username>bonc</username>
      <password>bonc</password>
    </server>
</servers>

這樣就能把bonc項目的構(gòu)件發(fā)布到專屬的兩個倉庫中套利,而其他用戶(沒有設(shè)置管理這兩個倉庫權(quán)限或角色的用戶)是不能部署構(gòu)件到這兩個倉庫中的攒砖,當(dāng)然了系統(tǒng)級別的用戶(admin和上文創(chuàng)建的hadoop用戶是可以的)

(7) nexus的調(diào)度任務(wù)

你可以在nexus界面上配置一些周期性執(zhí)行的后臺任務(wù)來維護(hù)nexus,以下為nexus 3.13 支持的后臺任務(wù)的部分說明:

接下來以發(fā)布倉庫的索引文件為例來演示怎么調(diào)度task

可以看到日裙,新創(chuàng)建的task在等待執(zhí)行:


到達(dá)設(shè)置的時間后吹艇,task開始執(zhí)行,狀態(tài)為running:


當(dāng)任務(wù)運行完成后昂拂,剛才那條task就會消失(因為剛才的task設(shè)置只執(zhí)行一次)受神,需要注意的是,這里生成的索引文件格侯,并不是被代理的倉庫中的所有構(gòu)件的索引鼻听,也就是說,這個任務(wù)并沒有生成maven中央倉庫中所有構(gòu)件的索引联四,而是nexus倉庫中已經(jīng)存在的構(gòu)件的索引

最后撑碴,關(guān)于更多nexus 3.x 的使用和配置的細(xì)節(jié)可以去Nexus 3 的官方文檔中學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朝墩,隨后出現(xiàn)的幾起案子醉拓,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亿卤,死亡現(xiàn)場離奇詭異愤兵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)排吴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門秆乳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钻哩,你說我怎么就攤上這事屹堰。” “怎么了街氢?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵双藕,是天一觀的道長。 經(jīng)常有香客問我阳仔,道長忧陪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任近范,我火速辦了婚禮嘶摊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘评矩。我一直安慰自己叶堆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布斥杜。 她就那樣靜靜地躺著虱颗,像睡著了一般轴踱。 火紅的嫁衣襯著肌膚如雪逝淹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天稿饰,我揣著相機(jī)與錄音缰儿,去河邊找鬼畦粮。 笑死,一個胖子當(dāng)著我的面吹牛乖阵,可吹牛的內(nèi)容都是我干的宣赔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼瞪浸,長吁一口氣:“原來是場噩夢啊……” “哼儒将!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起对蒲,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钩蚊,失蹤者是張志新(化名)和其女友劉穎贡翘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體两疚,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡床估,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年含滴,在試婚紗的時候發(fā)現(xiàn)自己被綠了诱渤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡谈况,死狀恐怖勺美,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碑韵,我是刑警寧澤赡茸,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站祝闻,受9級特大地震影響占卧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜联喘,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一华蜒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧豁遭,春花似錦叭喜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闪幽,卻和暖如春啥辨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盯腌。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工委可, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腊嗡。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓着倾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親燕少。 傳聞我的和親對象是個殘疾皇子卡者,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容