好了,新建一個 Maven 項目測試一下吧,看看jar包是否是從你指定的私服地址下載的。java
OK,重啓你的 Ubuntu 試試吧!數據庫
而後,在咱們要發佈的項目所在 POM 文件中<project>標籤下加入以下配置:apache
切記<server>標籤 id 要和<distributionManagement>標籤中的<repository>標籤 id 要一致。maven
mvn deploy 命令就發佈到倉庫了!!!測試
OK,伺服搭建、配置,以及本地 Maven 如何使用私服,基本介紹完畢。如有疑問或不對之處,歡迎聯繫我指正!this
安裝環境url
Ubuntu 14.04.3 LTS 64 位spa
Nexus 安裝.net
首先下載 Nexus 的 Linux 安裝包,官方地址:http://www.sonatype.org/nexus/go/,若是不能打開或沒法下載,能夠經過個人網盤分享下載:http://pan.baidu.com/s/1sjmpxsp。插件
下載完成後,把你的 jdk 安裝包上傳到 Ubuntu 中 /usr/local/src 目錄下,Nexus 是依賴 java jdk 的,若是已經安裝好了 jdk,以下命令開始進行安裝。(jdk 怎麼安裝?戳我!)
cd /usr/local/src tar –zvxf nexus-latest-bundle.tar.gz mv sonatype-work ../ mv nexus-2.11.2-06 ../ cd ../nexus-2.11.2-06/bin ./nexus start
nexus 啓動失敗,錯誤信息以下:
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
意思是說若是你想運行這個腳本,必須先設置環境變量RUN_AS_USER=root,那麼咱們來加入這個環境變量
vi /etc/profile # 末尾重起一行加入 export RUN_AS_USER=root # 退出保存 source /etc/profile # 讓環境變量當即生效
從新執行./nexus start。正常啓動了,若是還報錯,注意閱讀異常信息,耐心 Google Baidu。
咱們能夠經過網頁訪問 http://server_ip:8081/nexus,來查看服務是否安裝成功! 登錄的用戶名和密碼是:admin/amdin123
配置 Maven 使用私服下載 jar 包
一般咱們本地配置好 Maven 之後,Maven 默認從http://repo.maven.apache.org/maven2下載jar包,咱們若是須要指定 Maven 從本身的伺服下載 jar 包,須要修改 MAVEN_HOME/conf/settings.xml文件(MAVEN_HOME是你 Maven的安裝目錄),找到 <mirros>標籤,在其中加入以下內容:
<mirror> <id>myNexus</id> <mirrorOf>*</mirrorOf> <name>My Nexus Mirror</name> <url>http://192.168.0.147:8081/nexus/content/groups/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </mirror>
mirrorOf
* = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
從私服下載 snapshots 版本的 jar 包
進行了如上配置後,默認就從私服下載 jar 包了,可是沒法從私服下載到 snapshots 版本的 jar 包和插件。若想下載 snapshots版本須要進行以下配置,找到修改 MAVEN_HOME/conf/settings.xml文件中<profiles>標籤,在其中加入以下內容:
<!-- 經過上面的mirror配置,項目已經能從伺服下載jar包和插件,但不能下載snapshots版本的jar,經過如下配置開啓 --> <profile> <!-- 從指定伺服下載jar包,此處開啓了snapshots版本的jar包下載 --> <id>use-local-nexus</id> <repositories> <repository> <id>nexus</id> <name>local private nexus</name> <url>http://192.168.0.147:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <!-- 指定插件也從伺服下載 --> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local private nexus</name> <url>http://192.168.0.147:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
Maven私服開機啓動設置
vi /usr/local/nexus-2.11.2-06/bin/nexus # 修改一下兩項 NEXUS_HOME="/usr/local/nexus-2.11.2-06" RUN_AS_USER=root # 保存退出
vi /etc/rc.local # 在 exit0 以前加入下面一行 /usr/local/nexus-2.11.2-06/bin/nexus start
私服講解
Maven 安裝完成之後,通常咱們會對其進行一些配置,使其更易於使用。
登錄後點擊左側導航的 Repositories ,看到以下圖
注意 Type 這一列,Maven 倉庫一共有 4 中類型:group,hosted,proxy,virtual。
hosted 本地倉庫,一般咱們會部署本身的構件到這一類型的倉庫。如圖,安裝好私服後,會默認有三個 hosted 類型的倉庫,名字分別是 3rd party,Releases,Snapshots。
3rd party 是用來上傳一些公共庫中沒有的jar包,如 Oracle數據庫驅動,MySQL數據庫驅動。咱們將驅動上傳到 3rd party 這個倉庫之後,項目就能直接經過私服下載數據庫驅動了。
Releases 咱們將本身開發的jar包發佈到倉庫,若是jar包是 Releases 版本的,jar包會被髮布到這個倉庫
Snapshots,同 Releases 同樣,若是咱們的 jar 包是 Snapshots版本的,jar包會被髮布到這個倉庫
proxy 代理倉庫,安裝好私服後,會默認有一個名爲 Central 的倉庫,它是一個代理倉庫。也就是說,假如你請求私服下載 jar 包,可是私服中沒有此 jar 包,那麼私服會經過代理倉庫來下載你請求的 jar 包。你能夠配置多個代理倉庫,配置完代理倉庫後,記得將代理倉庫加入Public Repositories組。另外記得將代理倉庫的 Download Remote Indexes 選項設置爲 true 。這裏說幾個經常使用的代理倉庫地址:
https://repository.apache.org/snapshots/
http://repo1.maven.org/maven2/ (Central 庫的地址就是這個)
https://nexus.codehaus.org/snapshots/
http://maven.oschina.net/content/groups/public/ (開源中國的Maven倉庫)
http://repository.sonatype.org/content/groups/forge/
group,倉庫組。倉庫組中能夠加入多個hosted/proxy類型的倉庫。它至關於hosted/proxy類型的倉庫集合,因此咱們配置 Maven 從私服下載 jar 包時,通常把 Maven 私服地址指向這個倉庫組,而不指向具體某個 hosted/proxy類型的倉庫。
上面說的上傳 jar 包到 hosted 類型倉庫,添加一個 proxy 代理倉庫,以及在group中加入多個 hosted/proxy類型的倉庫,你能夠參考這篇文章http://aijezdm915.iteye.com/blog/1335025
發佈本身的 jar 包到私服
首先,MAVEN_HOME/conf/settings.xml文件中<servers>標籤下加入以下配置:
<server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server>
<distributionManagement> <repository> <id>nexus-releases</id> <name>Nexus Release Repository</name> <url>http://192.168.0.147:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://192.168.0.147:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
<profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <url>http://192.168.163.xx:xx/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://192.168.163.xx:xx/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>