前言:Maven的運(yùn)行機(jī)理是:Maven核心組件先去本地的.m2目錄下的庫(kù)中去尋找依賴或者插件,如果本地庫(kù)里沒(méi)有,如果配置了私服則上私服去下載依賴或者插件,如果私服上沒(méi)有,則上中央服務(wù)等Maven服務(wù)器起下載。因此,所有的依賴和插件都源于中央服務(wù)器??墒窃谟行┛量汰h(huán)境下,是不允許局域網(wǎng)和外網(wǎng)有任何連接,而又想使用Maven來(lái)構(gòu)建項(xiàng)目,那怎么辦呢?以下將講述具體步驟:
1)尋找一臺(tái)可以聯(lián)網(wǎng)的電腦,在上邊搭建nexus私服; 2)配置setting.xml文件,使得本地開發(fā)環(huán)境依賴nexus私服: 首先在<mirrors>標(biāo)簽下添加: <mirror> <profile> <!--必須配置以下插件庫(kù)依賴,這樣Maven才會(huì)百分之百依賴私服,否則Maven在私服上找不到插件,在等待一點(diǎn)時(shí)間以后,就會(huì)自己去中央服務(wù)器上去下載,加上如下配置,則不會(huì)繞過(guò)私服。--> <activeProfiles> 如果不理解鏡像<mirror>的含義,則可以查下其他資料。只有強(qiáng)行控制maven使之依賴于私服,才能在封閉的局域網(wǎng)內(nèi)進(jìn)行maven開發(fā),否則maven仍然會(huì)上中央服務(wù)器去下載依賴和插件,則會(huì)出現(xiàn)錯(cuò)誤。 3)使用maven搭建開發(fā)環(huán)境,并完成clean、package、test等動(dòng)作。總之一個(gè)目的:使得nexus可以下載盡量多的插件和依賴。 4)拷貝nuxus(可能是bundle的形式或者是在war的形式)和.m2的兄弟目錄sonatype-work文件夾到局域網(wǎng)的web服務(wù)器上(當(dāng)然能用usb接口,或者其他傳輸工具,否則只能跳樓了),然后啟動(dòng)web服務(wù)器。 5)使用上邊介紹的配置方式配置局域網(wǎng)內(nèi)的開發(fā)機(jī)setting.xml文件,使之完全依賴于部署在局域網(wǎng)內(nèi)的私服。 至此,部署完畢。這里注意剛才的snatype-work文件夾,打開這個(gè)目錄,可以看到在其下的nexus文件夾里存儲(chǔ)了nexus的很多數(shù)據(jù),如索引、依賴、插件等。其中storage中存儲(chǔ)的是中央服務(wù)器、第三方組件等。大家可以自己打開研究下。 另外,這樣可能在某些情況下,發(fā)現(xiàn)局域網(wǎng)內(nèi)部署的私服上的插件和依賴不夠用,就可以采用上邊的方式在此在可以上網(wǎng)的機(jī)器上引入模擬局域網(wǎng)內(nèi)的開發(fā),使得引入需要的插件和依賴。如果已經(jīng)在局域網(wǎng)內(nèi)的私服上部署了一些自己開發(fā)的組件,為了不影響之前的工作,可以從局域網(wǎng)內(nèi)把sonatype-work文件再拷貝到可以上網(wǎng)的電腦上,再次重復(fù)上邊的步驟。以上的辦法未必是解決這個(gè)問(wèn)題的最好辦法,僅供參考,如有更好的方法,歡迎各位網(wǎng)友留言賜教。 |
|
來(lái)自: liang1234_ > 《maven》