- 最近有需要搭建一個Maven,記錄一下
一、安裝介紹
這里就不多介紹了,網上都有,
二、環境准備
jdk1.8,這里略過,有需要翻以前的文章
nexus倉庫,nexus倉庫我們這里選擇的是選擇的是OSS 3.x版本。
填入郵箱登錄,需要注意的是Are you an existing Repo OSS user?*
- 這里第一次登錄 選擇NO
跳轉到下載頁面,選擇相應的即可,我這里選擇的是UNIX版的,
- 不過國內正常應該是下不來,這里貼下BDY吧: https://pan.baidu.com/s/1cKT6mXiWLsl_p326vTNKAQ 提取碼: n5ht
- 如果需要其他版本的在下面評論看到就回
三、安裝過程
我們下好的上傳到root目錄下,自己安裝的時候注意目錄
解壓文件到/usr/local 下
tar -zxvf nexus-3.24.0-02-unix.tar.gz -C /usr/local
進入目錄,添加軟連接,驗證
添加環境變量
vim /etc/profile
export NEXUS_HOME=/usr/local/nexus-3.24.0-02
刷新變量
source /etc/profile
修改root驗證,不然會出現
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
修改方法
[root@localhost local]# cd /usr/local/nexus-3.24.0-02/bin/
[root@localhost bin]# vim nexus
把run_as_root=true改成run_as_root=false
啟動nexus,進入目錄
[root@localhost bin]# cd /usr/local/nexus-3.24.0-02/
前台啟動
./bin/nexus console
后台進程啟動
./bin/nexus start
啟動成功訪問一下 ip:8081,竟然還有.NET的NUGET
登陸一下 用戶名:admin
- 密碼:/usr/local/sonatype-work/nexus3/admin.password
修改密碼
先選擇匿名用戶
環境安裝成功
配置完畢啟動登錄后,
-
在 /support/status 狀態頁面的 File Descriptors 項目可能會顯示 Recommended file descriptor limit is 65536 but count is 4096. 警告。
-
原因是 Nexus 3 將很有可能要消耗比 Linux 或 OSX 操作系統允許每個用戶的默認文件句柄數(4096)更多的數量。
解決辦法 修改文件打開最大限制,這里需要重啟
[root@master ~]# vim /etc/security/limits.conf
# End of file
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
[root@master ~]# ulimit -Sn
[root@master ~]# ulimit -Hn
四、配置Nexus
Maven用到的Repositories說明:
-
maven-central:maven中央庫,默認從https://repo1.maven.org/maven2/拉取jar
-
maven-releases:私庫發行版jar
-
maven-snapshots:私庫快照(調試版本)jar
-
maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml中使用。
順便提一下NuGet,等着有空再弄個NuGet吧
-
nuget.org-proxy,表示代理倉庫。如果本地有這個包,它就從本地提供,如果本地沒有,它會從nuget.org下載到本地,然后給我們提供這個包。
-
nuget-hosted,類型是hosted,表示托管倉庫。我們一般把自己開發的包上傳到該倉庫中。
-
nuget-group,類型是group,表示倉庫組,它結合了nuget.org-proxy和nuget-hosted,能對外提供上述兩者中的包。
-
nuget-hosted負責包上傳,nuget.org-proxy負責代理包,nuget-group負責提供包。Maven同理
如果不夠用,自己也可以根據博文上面的倉庫類型進行選用創建。
五、上傳jar包到nexus
修改如下的配置,我這里以idea演示,
-
這里特別注意的是settings.xml和pom.xml的id需要匹配
-
首先去設置中查看Maven目錄以及setting存放的位置
找到settings.xml,主要修改的地方
<server>
<id>releases</id>
<username>admin</username>
<password>password</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>password</password>
</server>
再找到pom.xml,需要修改的地方
<distributionManagement>
<repository>
<id>releases</id>
<name>releases</name>
<url>http://192.168.1.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>snapshots</name>
<url>http://192.168.1.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
然后Maven deploy
BUILD SUCCESS
這里說下build出現的錯誤代碼
-
Return code is: 405 檢查上面兩個配置地址,單詞是否完全寫對
-
Return code is: 401或者Return code is: 403 修改Nexus中Releases倉庫默認的"Deployment Policy",將其修改為"Allow Redeploy"就ok了。
-
Return code is: 400 檢查上面兩個配置地址,單詞是否完全寫對
這里貼一下全部的settings.xml 僅供參考
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:\Users\Administrator\.m2\repository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>maven_3rd_part</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
<mirrors>
</mirrors>
<profiles>
<profile>
<id>default_profile</id>
<repositories>
<!--包含需要連接到遠程倉庫的信息 -->
<repository>
<!--遠程倉庫唯一標識 自定義-->
<id>test_name</id>
<!--遠程倉庫名稱 自定義-->
<name>test_name</name>
<!--如何處理遠程倉庫里發布版本的下載 -->
<releases>
<!--true或者false表示該倉庫是否為下載某種類型構件(發布版,快照版)開啟。 -->
<enabled>true</enabled>
<!--該元素指定更新發生的頻率。Maven會比較本地POM和遠程POM的時間戳。這里的選項是:always(一直),daily(默認,每日),interval:X(這里X是以分鍾為單位的時間間隔),或者never(從不)。 -->
<updatePolicy>never</updatePolicy>
<!--當Maven驗證構件校驗文件失敗時該怎么做-ignore(忽略),fail(失敗),或者warn(警告)。 -->
<checksumPolicy>warn</checksumPolicy>
</releases>
<!--如何處理遠程倉庫里快照版本的下載。有了releases和snapshots這兩組配置,POM就可以在每個單獨的倉庫中,為每種類型的構件采取不同的策略。例如,可能有人會決定只為開發目的開啟對快照版本下載的支持。參見repositories/repository/releases元素 -->
<snapshots>
<!--true或者false表示該倉庫是否為下載某種類型構件(發布版,快照版)開啟。 -->
<enabled>true</enabled>
<!--該元素指定更新發生的頻率。Maven會比較本地POM和遠程POM的時間戳。這里的選項是:always(一直),daily(默認,每日),interval:X(這里X是以分鍾為單位的時間間隔),或者never(從不)。 -->
<updatePolicy>always</updatePolicy>
<!--當Maven驗證構件校驗文件失敗時該怎么做-ignore(忽略),fail(失敗),或者warn(警告)。 -->
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<!--遠程倉庫URL,按protocol://hostname/path形式 -->
<url>http://66.66.66.66:8091/repository/maven_3rd_part/</url>
<!--用於定位和排序構件的倉庫布局類型-可以是default(默認)或者legacy(遺留)。Maven 2為其倉庫提供了一個默認的布局;然而,Maven 1.x有一種不同的布局。我們可以使用該元素指定布局是default(默認)還是legacy(遺留)。 -->
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-net-cn</id>
<name>Maven China Mirror</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>default_profile</activeProfile>
</activeProfiles>
</settings>