1、概述html
一、概要java
如今的項目基本都是用Maven來管理工程,這樣一來在公司內容搭建一個私服就很是有必要了,這樣一來能夠管理公司內部用的JAR包,也能夠管理第三方的各類JAR來,以避免每次都要從外網的倉庫中下載。私服有兩種軟件搭建Nexus和artifactory,這兩個各有優勢。artifactory 三年前已配置過了,本文配置一下Nexus。Nexus仍是一個比較流行的私服。數據庫
二、Nexus介紹apache
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了本身內部倉庫的維護和外部倉庫的訪問。利用Nexus你能夠只在一個地方就可以徹底控制訪問 和部署在你所維護倉庫中的每一個Artifact。Nexus是一套「開箱即用」的系統不須要數據庫,它使用文件系統加Lucene來組織數據。Nexus 使用ExtJS來開發界面,利用Restlet來提供完整的REST APIs,經過m2eclipse與Eclipse集成使用。Nexus支持WebDAV與LDAP安全身份認證。緩存
Nexus的下載地址是:http://www.sonatype.org/nexus/go/到官網上將ZIP的壓縮包下載下來便可,解壓以後發現有兩個文件夾,一個是nexus-2.11.0-02,另外一個是sonatype-work;第一個文件夾包含了Nexus運行所須要的文件,是運行Nexus必須的;第二個文件夾目錄包含Nexus生成的配置文件、日誌文件、倉庫文件等,當須要備份Nexus的時候,默認備份的是此目錄文件。安全
2、環境準備app
一、maven 3.3.3 下載最新的版本3\eclipse
二、Nexus 2.11.1-01-bundle下載當前最新的版本maven
3、Nexus的安裝配置ide
一、Nexus安裝
下載完nexus以後,只須要將壓縮包解壓,將解壓後的文件夾放到你想要安裝的目錄便可——個人爲D盤。
二、配置Nexus環境變量
將nexus的bin目錄設置到path的環境變量中(比較簡單不詳細講解了)
三、配置Nexus
在 nexus的根目錄bin\jsw\conf\wrapper.conf的文件在找到
# Set the JVM executable應該在15行左右,配置JAVA的路徑
wrapper.java.command=D:\Program Files\Java\jdk1.7.0_71\bin\java
將java目錄下的java.exe的路徑配置到裏面便可(根據你電腦java的配置)
四、Nexus的測試
用管理員權限打開命令行(若是你的用戶不是Administrator則會提醒:出現 OpenSCManager failed 拒絕訪問的錯誤)
在命令行中輸入nexus若是出現下面提示這證實配置成功——nexus的環境變量配置成功
五、Nexus安裝並啓動
輸入nexus start出現以下信息:說明nexus配置好了,可是尚未安裝
輸入nexus install便可安裝——以下信息即安裝成功
啓動nexus:輸入nexus start便可
六、啓動失敗
若是啓動失敗提示:
wrapper | The nexus service was launched, but failed to start
可能有兩種緣由:
一、Nexus安裝目錄 bin\jsw\conf\wrapper.conf中的java配置錯誤致使啓動失敗(錯誤可能性1:版本錯誤;錯誤可能性2:寫錯路徑了).
二、8081端口被佔用致使啓動失敗(若是是非系統進程佔用,結束該進程便可),或修改Jetty的端口,在Nexus的安裝目前/conf/nexus.properties文件中找到 application-port=8081 改成8181就好了。
七、成功
默認地址:http://127.0.0.1:8081/nexus
點擊右上角Log In進行登陸,默認賬號:admin、密碼:admin123
4、Nexus初始化配置
一、Nexus總體介紹
咱們能夠從上圖中看到四種倉庫類型:group(倉庫組)、hosted(宿主)、proxy(代理)和virtual(虛擬)。其中每種類型的Format有Maven1或者Maven2,這裏咱們不看Maven1的。倉庫的Policy(策略)表示該倉庫爲發佈(Release)版本仍是快照(Snapshot)版本倉庫。
在圖中,Nexus列出了默認的幾個倉庫:
Public Repositories:倉庫組,將全部策略爲Release的倉庫聚合並經過一致的地址提供服務。
3rd party:一個策略爲Release的宿主類型倉庫,用來部署沒法從公共倉庫得到的第三方發佈版本構件。
Apache Snapshots:策略爲Snapshots的代理倉庫,用來代理Apache Maven倉庫的快照版本構件。
Central:該倉庫代理Maven的中央倉庫,策略爲Release,只會下載和緩存中央倉庫中的發佈版本構件。
Central M1 shadow:maven1格式的虛擬類型倉庫。
Codehaus Snapshots:代理Codehaus Maven倉庫快照版本的代理倉庫。
Release:策略爲Release的宿主類型倉庫,用來部署組織內部的發佈版本構件。
Snapshots:策略爲Snapshots的宿主類型倉庫,用來部署組織內部的快照版本構件。
二、點擊左側Repositories項 -> central倉庫 -> Configuration -> Download Remote Indexes=True -> Save,表示下載遠程倉庫的索引。
同時override local storage location 也是能夠改一下。
點擊「save」。
點擊左邊的「Administration」->"Scheduled Tasks"連接,若是沒有出現「Update Repositories Index」處於Running狀態,那麼須要在Public Repositories行右擊,點擊"Update Index"。
而後再點擊Schedule Tasks就能夠看到有任務處於Running狀態了。
等到索引下載完成以後,就能夠在"Repositories"界面中,選擇Browser Index選項卡,能夠看到Maven中央倉庫內容的樹形結構.
三、手動上傳JAR包
GAV Definition:選擇GAV Parameters
輸入JAR包對應的:Group\Artifact\verison\
選擇JAR
第三步上傳包,第四步add artifact 最後update artifact.
這樣包上傳成功。POM能夠用了。
四、Maven的配置
在Maven安裝目錄conf/setting.xml 在<mirrors>內配置以下內容
<mirror> <id>nexus</id> <name>internal nexus repository</name> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror>
在執行
mvn clean eclipse:eclipse -Ddowloadsources=true
下自動從Nexus私服中下載JAR包。
五、部署構件到私服
咱們在實際開發過程是多我的的,那麼總有一些公共模塊或者說第三方構件是沒法從Maven中央庫下載的。咱們須要將這些構件部署到私服上,供其餘開發人員下載。用戶除了經過界面手動上傳構件,也能夠配置Maven自動部署構件至Nexus的宿主倉庫。
使用Maven部署構件到Nexus私服上平常開發的快照版本部署到Nexus中策略爲Snapshot的宿主倉庫中,正式項目部署到策略爲Release的宿主倉庫中,POM的配置方式以下:
<!-- 配置遠程發佈到私服,mvn deploy --> <distributionManagement> <repository> <id>releases</id> <name> Nexus Release Repository </name> <url> http://127.0.0.1:8081/nexus/content/repositories/releases/ </url> </repository> <snapshotRepository> <id>snapshots</id> <name> Nexus Snapshot Repository </name> <url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/ </url> </snapshotRepository > </distributionManagement >
Nexus的倉庫對於匿名用戶只是只讀的。爲了可以部署構件,咱們還須要再settings.xml中配置驗證信息:
server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server>
其中,驗證信息中service的id應該與POM中repository的id一致。
這樣經過 maven 能夠自動佈置到Nexus私服中了。命令以下:
mvn clean deploy -Dmaven.test.skip=true
這樣就能夠把把自動的發佈到nexus中去了。
六、完工