# nexus搭建maven私服及私服jar包上傳和下載
一、nexus搭建maven私服及相關介紹
1、下載nexus-2.12.0-01-bundle.zip(版本隨意)
2、cmd進入bin目錄,執行nexus 下一步執行nexus install
3、開啟nexus服務,訪問nexus服務器地址:http://localhost:8081/nexus/,默認登錄賬戶為admin,默認密碼為admin123,登錄成功后點擊Repositories可看到私服有以下類型倉庫:

1)hosted,宿主倉庫,部署自己的jar到這個類型的倉庫,包括releases和snapshot兩部分,Releases公司內部發布版本倉庫、 Snapshots 公司內部測試版本倉庫
2)proxy,代理倉庫,用于代理遠程的公共倉庫,如maven中央倉庫,用戶連接私服,私服自動去中央倉庫下載jar包或者插件。
3)group,倉庫組,用來合并多個hosted/proxy倉庫,通常我們配置自己的maven連接倉庫組。
4)virtual(虛擬):兼容Maven1 版本的jar或者插件
4、nexus倉庫默認在解壓文件的sonatype-work\\nexus\\storage目錄中:

apache-snapshots:代理倉庫,存儲snapshots構件,代理地址https://repository.apache.org/snapshots/
central-m1:virtual類型倉庫,兼容Maven1 版本的jar或者插件
releases:本地倉庫,存儲releases構件。
snapshots:本地倉庫,存儲snapshots構件。
thirdparty:第三方倉庫
public:倉庫組
二、向maven私服上傳寫好的jar
1、需求:將項目子模塊ssm\_dao這個工程打包成jar并上傳到私服
2、第一步:需要在客戶端即部署dao工程的電腦上配置 maven環境,并修改 settings.xml 文件,配置連接私服的用戶
和密碼。此用戶名和密碼用于私服校驗,因為私服需要知道上傳都 的賬號和密碼 是否和私服中的賬號和密碼 一致。
在maven文件夾下apache-maven-3.5.0\\conf\\settings.xml文件添加一下代碼:(節點內)
~~~html
<server> <!--releases 連接發布版本項目倉庫--> <id>releases</id> <!--訪問releases這個私服上的倉庫所用的賬戶和密碼--> <username>admin</username> <password>admin123</password> </server> <server> <!--snapshots 連接測試版本項目倉庫--> <id>snapshots</id> <!--訪問releases這個私服上的倉庫所用的賬戶和密碼--> <username>admin</username> <password>admin123</password> </server>
~~~
3、在ssm\_dao的pom.xml文件中添加一下代碼:
~~~html
<!--將ssm_dao上傳私服 --> <distributionManagement> <!--pom.xml這里<id> 和 settings.xml 配置 <id> 對應 --> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
~~~
根據工程的版本號決定上傳到哪個宿主倉庫,如果版本為release則上傳到私服的release倉庫,如果版本為snapshot則上傳到私服的snapshot倉庫。
如:ssm\_dao的工程的版本號為0.0.1-SNAPSHOT,則ssm\_dao打包好的jar在本地倉庫snapshots可見
~~~html
<modelVersion>4.0.0</modelVersion> <parent> <groupId>com.nocol</groupId> <artifactId>ssm_parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>ssm_dao</artifactId>
~~~
4、正式上傳:首先啟動nexus服務,對ssm\_dao工程執行deploy命令,看到BUILD SUCCESS則表示上傳成功了

此時在\\nexus-2.12.0-01-bundle\\sonatype-work\\nexus\\storage\\snapshots下能找到,但是在本地倉庫并沒有,因為jar包上傳在maven私服,接下來介紹如何能讓自己上傳的jar出現在本地倉庫
如圖:(本地snapshots)

如圖:(私服)

5、此時將ssm\_dao工程關閉,可以看到依賴ssm\_dao的ssm\_service工程出現感嘆號(缺少了ssm\_dao.jar)
三、maven私服自動下載jar包
1、在沒有配置nexus之前,如果本地倉庫沒有,去中央倉庫下載。有了私服之后,本地項目首先去本地倉庫找jar,如果沒有找到則連接私服從私服下載jar包,如果私服沒有jar包私服同時作為代理服務器從中央倉庫下載jar包,這樣提高了下載速度,項目連接私服下載jar包的速度要比項目連接中央倉庫的速度快的多。
2、nexus中包括很多倉庫,如上面介紹的hosted中存放的是自己發布的jar包及第三方公司的jar包,proxy中存放的是中央倉庫的jar,為了方便從私服下載jar包可以將多個倉庫組成一個倉庫組,每個工程需要連接私服的倉庫組下載jar包,這樣在項目中配置下載路徑只需要給倉庫組路徑即可,即:
http://localhost:8081/nexus/content/groups/public/
3、第一步:在客戶端的setting.xml中配置私服的倉庫,由于setting.xml中沒有repositories的配置標簽需要使用profile定義倉庫(profile節點內),然后把阿里鏡像禁止掉
~~~html
<profile> <!--profile的id--> <id>dev</id> <repositories> <repository> <!--倉庫id,repositories可以配置多個倉庫,保證id不重復--> <id>nexus</id> <!--倉庫地址,即nexus倉庫組的地址--> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下載releases構件--> <releases> <enabled>true</enabled> </releases> <!--是否下載snapshots構件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件倉庫,maven的運行依賴插件,也需要從私服下載插件 --> <pluginRepository> <!-- 插件倉庫的id不允許重復,如果重復后邊配置會覆蓋前邊 --> <id>public</id> <name>Public Repositories</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> </profile>
~~~
使用profile定義倉庫需要激活才可生效,再在profile結束標簽后添加一下代碼:
~~~html
<!--使用profile定義倉庫需要激活才可生效--> <activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
~~~
4、配置成功后通過eclipse查看ssm\_service工程下pom.xml的Effective POM選項,可看到如下代碼:
~~~html
<repositories> <repository> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> <id>nexus</id> <url>http://localhost:8081/nexus/content/groups/public/</url> </repository> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <name>Public Repositories</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </pluginRepository> </pluginRepositories>
~~~
表示當該工程需要的jar在本地倉庫沒有時,根據這里配置的訪問路徑自動去maven私服下載。此時再update一下父工程,發現ssm\_service的感嘆號消失(此時ssm\_dao還是close狀態),說明ssm\_service工程已經在maven私服內下載了ssm\_dao.jar,同時在本地倉庫也存在了該jar。
- spring
- 1.spring第一天
- 1.1 安裝spring插件(spring tool suite)
- 1.2 spring概述
- 1.3 控制反轉&依賴注入
- 1.4 springIOC容器
- 1.5 依賴注入的四種方式
- 1.6 配置bean的細節
- 1.7 bean之間的關系
- 1.8 bean作用域
- 1.9 補充:創建對象的幾種方法
- 1源代碼位置
- 2.spring第二天
- 2.1 使用外部屬性文件
- 2.2 spEL
- 2.3 bean的生命周期
- 2.4 通過工廠方式配置bean
- 2.5 基于注解的方式配置bean
- 2.6 組件裝配
- 2.7 靜態代理
- 2.8 動態代理
- 2.9 Cglib代理
- 2源代碼位置
- 3. spring第三天
- 3.1 springAOP
- 3.1.1 AOP簡介
- 3.1.2 為什么使用AOP
- 3.1.3 AOP關鍵術語
- 3.1.4 AOP圖解
- 3.1.5 springAOP實現步驟
- 3.1.6 SpringAOP實現原理:
- 3.1.7 AOP的好處
- 3.1.8 AOP在實際項目中的主要應用
- 3代碼地址
- 3.1.9 純注解版配置aop的方式
- 3.2 maven環境搭建
- 附IDEA激活碼
- 4. spring第四天
- 4.1 c3p0事務
- 4.2 命令窗口事務
- 4.3 c3p0連接池設置
- 4.4 事務中的一些基本概念
- 4.5 事務的傳播行為
- 4.6 自定義異常
- 4.7 spring整合Junit單元測試
- 4.8 JdbcTemplate(附源代碼)
- 事務源代碼
- 4.9 純注解tx
- 4.10 基于xml配置事務
- 0. jsp頁面修改編碼方式
- 0.1 eclipse配置tomcat
- 0.單例模式-飽漢模式
- 0.單例模式-饑漢模式
- springMVC
- 1. springmvc第一天
- 1.1 springMVC概述
- 1.2 springmvc框架搭建及第一個應用程序
- 1.3 @RequestMapping
- 1.4 RequestMapping修飾類
- 1.5 RequestMapping精準化映射
- 1.6 Ant風格URL
- 1.7 帶有占位符的url映射
- 1.8 REST風格
- 1.9 RequerstParam獲取請求正文
- 2. springmvc第二天
- 2.1 優化
- 2.2 POJO綁定請求參數
- 2.3 RequestHeader獲取請求報頭信息
- 2.4 CookieValue獲取Cookie信息
- 2.5 獲取原生ServletAPI
- 2.6 ModelAndView處理模型數據
- 2.7 Map、Model、ModelMap處理模型數據
- 2.8 @SessionAttributes注解
- 2.9 @ModelAttribute無返回值方法及方法入參
- 2.10 @ModelAttribute修飾有返回值類型的方法
- 代碼地址
- 3. springmvc補充
- 3-1 springmvc工作原理
- 3-2 springmvc form表單提交中文亂碼
- 3-3 數據的格式化
- 3-4 自定義類型轉換器
- 3-5 其他知識點
- 3-6 crud代碼
- 3-7 @DateTimeFormat日期格式化
- 3-8 數據驗證的概念及JSR303驗證
- 3-9 Hibernate-Validator驗證框架
- 3-10 Controller捕獲錯誤消息
- 3-11 errors標簽在頁面中獲取錯誤消息
- 3-12 錯誤消息的定制及國際化
- 3-13 自定義攔截器
- 3-14 Java代碼中獲取國際化信息
- 3-15 超級鏈接設置國際化
- 3-16 AJAX支持之@RequestBody
- mybatis
- 1. mybatis第一天
- 1. 為什么使用mybatis
- 2. 下載地址
- 3. hello
- 4. mybatis三種開發模式
- 5. 全局配屬屬性內容
- 6. DTD設置
- 7. Mapper中的CRUD
- 8. 8.mybatis使用主鍵自增
- 9. #{}中的參數處理
- 10. #{}與${}區別
- 11. 集合數據的查詢
- 12 動態sql
- 12.1 if
- 12.2 choose, when, otherwise
- 12.3 trim, where, set
- 12.4 foreach
- 代碼位置
- 2. mybatis第二天
- 1.封裝map類型的數據
- 2. resultMap自定義封裝規則
- 0代碼位置
- 3. mybatis緩存機制
- ssm整合
- 1.maven
- 2.ssm基礎環境搭建
- 2-1 引入項目依賴的jar包
- 2-2 引入bootstrap,jquery
- 2-3 創建項目包結構
- 2-4 編寫web.xml配置文件
- 2-5 編寫sping,springmvc,mybatis配置文件
- 2-6 逆向工程mbg.xml
- shiro安全框架
- 1.shiro簡介
- 易購Buy商城
- 第一天
- 1.課程計劃
- 2.電商行業背景
- 3.易購Buy介紹
- 4.易購Buy架構
- 5.工程搭建
- 6.工程啟動和測試
- 7.ssm框架整合
- 8.整合測試
- 9.svn
- 9.1 svn服務端
- 9.2 svn客戶端
- 第二天
- 1.SOA架構分析
- 2.dubbo使用方法
- 3.注冊中心
- 4.工程改造
- 5.easyUI
- maven
- 1.maven介紹
- 2.idea配置maven和服務器
- 3.創建web工程
- 4.分模塊構建工程
- 5. 代碼位置
- 6. nexus
- Luence搜索
- 1.了解搜索技術
- 2.Lucene的基本使用
- solr
- SolrCloud