首先要說讽营,這是一個輕量化方案移宅,存在不完美归粉。最周全的方案,是使用nexus oss漏峰。
發(fā)現(xiàn)nexus的管理成本很大糠悼,就從網(wǎng)上找了一些資料,總結(jié)出這個方案浅乔。
這個方案的有點在于倔喂,快速铝条、組件輕量化,因此適用于公司或個人進行小型系統(tǒng)開發(fā)席噩。
避免了nexus一系列不必要的環(huán)境搭建班缰、配置悼枢、用戶管理的成本。不完美的地方最后說馒索,讀完整篇文章更容易理解。
一双揪、 安裝準備
- Linux服務(wù)器(使用的更多)动羽;
- Maven 3渔期;
- Nginx;
- 一個Maven項目(用于測試)疯趟;
二、 搭建Maven服務(wù)器信峻,調(diào)整settings.xml配置
設(shè)置服務(wù)器本地路徑
<localRepository>/home/maven/MavenRepository</localRepository>
注:僅當本服務(wù)器兼具本機打包,也接收其他客戶端mvn deploy盹舞,則應(yīng)該將此路徑與后面提到的發(fā)布路徑統(tǒng)一設(shè)置产镐;
搭建Nginx服務(wù)器,添加alias踢步,指向Repository路徑:
a. 編輯nginx/conf/nginx.conf文件癣亚,添加如下(注意,紅色路徑的結(jié)尾一定都要有斜杠获印,坑了我好長時間)述雾,重啟nginx服務(wù),訪問http://serverip:port/mingya_erp_maven/(這里結(jié)尾也要有斜杠)兼丰,就能夠看到目錄了,只不過還是個空目錄:
location /mingya_erp_maven/ {
alias /home/maven/mingya_erp_maven/;
autoindex on;
client_max_body_size 300M;
}
b. 配置pom.xml玻孟,標識我們的私有倉庫。id是pom中對該倉庫的標識鳍征,隨便叫黍翎,還是要助于路徑結(jié)尾的斜杠不能丟
分別添加repositories和pluginRepositories,這樣開發(fā)人員拿到這個項目蟆技,就可以完全從私服中獲取所需的jar包了(前提是要上傳jar包到私服玩敏,后面會說如何上傳)
...
<repositories>
<repository>
<id>mingya_erp_repository</id>
<url>http://192.168.64.189:8088/mingya_erp_maven</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>mingya_erp_repository</id>
<url>http://192.168.64.189:8088/mingya_erp_maven</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
...
c. 配置發(fā)布配置斗忌,將構(gòu)建結(jié)果發(fā)布至私服质礼,首先需要添加構(gòu)建地址
還需要有wagon插件旺聚,負責scp上傳
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.10</version>
</extension>
</extensions>
說道最后,scp必須配置用戶名眶蕉、密碼砰粹,如果卸載pom.xml中,自然沒有安全可言造挽,在哪里配置的用戶名密碼呢碱璃?
在開發(fā)人員(負責發(fā)布的)的本地setting.xml中,配置server饭入,設(shè)置用戶名嵌器,密碼
...
<server>
<id>mingya_erp_repository</id>
<username>maven</username>
<password>123456Aa</password>
</server>
...
至此,使用mvn deploy 即可上傳構(gòu)建至私服
但私服中只有構(gòu)建結(jié)果谐丢,構(gòu)建所需的依賴包爽航,比如spring-mvc,能否也保存下來乾忱,這樣開發(fā)人員就可以直接從私服上獲取了不是讥珍?
d.手工上傳系統(tǒng)依賴的構(gòu)建
到這里,就是這個方案的不足之處了窄瘟,因為Nginx本身只起到Htttp服務(wù)器的作用衷佃,沒有辦法同步中央倉庫,使得私服總是少很多依賴的構(gòu)建蹄葱。我是把本地倉庫拷貝到私服上氏义。這樣,當前項目就可以直接通過私服完成開發(fā)了图云。不過一旦引入新的依賴惯悠,我還要手工上傳琼稻。
nexus就是后話了~