Nexus入门【转】
一、配置Maven
[root@meteor ~]# wget http://www-us.apache.org/dist/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz [root@meteor ~]# tar xfz apache-maven-3.5.3-bin.tar.gz -C /usr/java/ [root@meteor ~]# cd /usr/java/ [root@meteor java]# ln -s apache-maven-3.5.3 maven [root@meteor java]# vim /etc/profile (添加如下行) JAVA_HOME=/usr/java/latest MAVEN_HOME=/usr/java/maven PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME [root@meteor java]# source /etc/profile (引用profile) [root@meteor java]# java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) [root@wlf1 java]# mvn -v Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00) Maven home: /usr/java/maven Java version: 1.8.0_162, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_162/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-693.17.1.el7.x86_64", arch: "amd64", family: "unix" [root@meteor java]#?
?maven命令小結
mvn compile 命令會根據 pom.xml 中定義的dependencies 依賴,去maven 中心下載相關的包并進行編譯,將編譯后的文件放在 target/classes/目錄中;
mvn test 命令會根據test目錄中定義的測試文件對類進行編譯測試,并把生成的測試報告存放在target/surefire-reports/目錄中;
mvn clean 命令清除target 目錄
mvn package 命令生成相關的jar包存放在 target目錄中
mvn install 命令將生成的*.jar包復制到本地庫中(~/.m2/repository/)
二、配置nexus
代碼依賴是通過Maven進行管理的,而Maven的私庫推薦使用的是Nexus。
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。Nexus是一套“開箱即用”的系統不需要數據庫,它使用文件系統加Lucene來組織數據。Nexus 使用ExtJS來開發界面,利用Restlet來提供完整的REST APIs,通過m2eclipse與Eclipse集成使用。Nexus支持WebDAV與LDAP安全身份認證。 Nexus分為專業收費的Nexus Pro與免費的Nexus OSS兩個版本。本文以Nexus OSS為主體。
1、安裝過程
?
?默認端口是tcp 8081; 默認管理員用戶名和密碼是admin/admin123。在瀏覽器中訪問如下所示:
登錄后可以在Server administration and configuration --> Repositories中查看到各種倉庫,例public庫如下所示:
2、基本操作
(1) Nexus的倉庫分為以下幾種:
proxy : 代理倉庫,對遠程倉庫的本地代理。
hosted : 本地倉庫。
virtual:影子倉庫,對proxy或hosted倉庫的映射。
group:倉庫組,作為邏輯倉庫組對外
邏輯關系 如下:
(2) 如果需要對repository的配置進行修改,如 central,Apache Snapshots,可參考如下操作:
點擊左側 repositories,右側打開倉庫列表。
選擇倉庫 central,可點rebuild index等操作,nexus 3.x保持默認即可。
(3) 新建hosted類型的倉庫,如下所示:
然后選擇“maven hosted”,如下所示:
輸入Repositories 名稱,版本策略選擇“Release”,Layout pollcy選擇"Strict" ,Deployment pollcy選擇"Allow redeploy",如下所示:
(4) 新建proxy類型的倉庫(工廠)
輸入Repositories name ,并輸入proxy 的目標地址,如下所示:
(5) 將自定義的proxy類型repository 添加到maven-public group中
打開maven-public repositories ,并選擇相關的members ,如下所示:
最終各庫狀態如下:
3、調用 Repository
(1) 可以在java各項目的pom.xml文件中定義repository的url,從而調用 以上各repositories ,格式如下所示:
(2) 如果有多個工廠(倉庫),就需要定義多段<repository>,指定多個<url>。為了簡化操作,可以在nexus中將多個Repository加入一個 Repo-Group,然后在pom.xml文件中指定一個Repo-Group的url即可獲得多個Repository的依賴包。如下所示:
<repositories><repository><id>nexus</id><name>nexus_repo</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled> true</enabled></releases><snapshots><enabled> true</enabled></snapshots></repository></repositories>(3 ) 如果用戶新創建一個項目,或更換一個新的workspace,就需要在新的pom.xml文件中重新指定respository,所以不推薦這種方式。推薦方法:在maven 的settings.xml文件中指定nexus倉庫地址,如下所示:
<profiles><profile><id>nexusProfile</id><repositories> <repository><id>nexus</id><name>nexus_repo</name><url>http://localhost:8081/repository/maven-public/</url><releases><enabled> true</enabled></releases><snapshots><enabled> true</enabled></snapshots></repository></repositories></profile></profiles>以上定義的profile必須在settings.xml文件激活才能生效,如下所示:
<activeProfiles><activeProfile>nexusProfile</activeProfile></activeProfiles>(4) 以上方法:如果把nexus stop ,它將跳過nexus,直接到maven的中央工廠(倉庫)去下載。如果希望只有nexus才可以到中央工廠(倉庫)下載,就需要在settings.xml文件中配置mirror,如下所示:
<mirrors><mirror><id>nexusMirror</id><mirrorOf>*</mirrorOf><name>all repositoies for this Mirror.</name><url>http://localhost:8081/repository/maven-public/</url></mirror> </mirrors>為了可以在central repository 中下載snapshot 的依賴,需要添加 如下的profile:
<profile><id>centralProfile</id><repositories><repository><id>central</id><name>Central Repository</name><url>https://*</url><layout>default</layout><snapshots><enabled>true</enabled></snapshots></repository></repositories> </profile>并將之前的激活的profile修改為centralProfile,如下所示:
<activeProfiles><activeProfile>centralProfile</activeProfile></activeProfiles>(5) 為了讓各項目在mvn deploy時可以將*.jar包push到hosted類型的本地repository中,首先需要在項目的pom.xml文件中定義push的target repository,如下所示:
<distributionManagement><repository><id>user-release</id><name>release</name><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>user-snapshot</id><name>snapshot</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>圖例如下:
然后在maven的setting.xml文件 中定義 user-release和user-snapshot所對應的用戶名、密碼,如下所示:
<servers><server><id>user-release</id><username>admin</username><password>admin123</password></server><server><id>user-snapshot</id><username>admin</username><password>admin123</password></server></servers>注意:一定要保證snapshot的repository 的 "Allow redeploy"屬性,如下所示:
較完整的maven配置文件settings.xml文件 內容如下:
vim /usr/java/maven/conf/settings.xml
提示:
Maven安裝目錄下的 /conf/settings.xml 起全局控制作用。
用戶目下的Maven配置文件,即:~/.m2/settings.xml 僅對當前用戶用效
關于Maven的mirror:
mirrors可以配置多個mirror,每個mirror有id,name,url,mirrorOf屬性,id是唯一標識一個mirror就不多說了,name貌似沒多大用,相當于描述,url是官方的庫地址,mirrorOf代表了一個鏡像的替代位置,例如central就表示代替官方的中央庫。
鏡像庫并不是一個分庫的概念,就是說當a.jar在第一個mirror中不存在的時候,maven會去第二個mirror中查詢下載。但事實卻不是這樣,當第一個mirror中不存在a.jar的時候,并不會去第二個mirror中查找,甚至于,maven根本不會去其他的mirror地址查詢。
maven的mirror是鏡像,而不是“分庫”,只有當前一個mirror無法連接的時候,才會去找后一個,類似于備份和容災。
mirror也不是按settings.xml中寫的那樣的順序來查詢的。所謂的第一個并不一定是最上面的那個。當有id為B,A,C的順序的mirror在mirrors節點中,maven會根據字母排序來指定第一個,所以不管怎么排列,一定會找到A這個mirror來進行查找,當A無法連接,出現意外的情況下,才會去B查詢。
在Maven工程的pom.xml中:
當發布到屬性為snapshot的倉庫時,工程自述說明小節中的 <version>,需要帶上后綴 SNAPSHOT,否則會當成 release 發布, 會收到 400 Bad Request 錯誤。
發布配置中的 <url> 地址一定要區分清楚。并在 release 與 snapshot 倉庫里配置不同的地址。此外,id、name 要與Nexus中倉庫的配置 configuration 中的內容一致。
Nexus OSS的倉庫屬性:
snapshot : 快照版本,即不穩定的頻繁發布場所,常用于團隊成員快速聯調。
release : 正式版本,即穩定包所在場所
maven-public倉庫地址 訪問如下:
?
轉自
Nexus入門-WorkNote-51CTO博客 https://blog.51cto.com/caiyuanji/2117120
轉載于:https://www.cnblogs.com/paul8339/p/11365155.html
總結
以上是生活随笔為你收集整理的Nexus入门【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 将文件打包、压缩并分割成指定
- 下一篇: [小程序]小程序框架的简单页面布局