Maven 倉庫的分類:(maven的倉庫只有兩大類)
1.本地倉庫
2.遠程倉庫,在遠程倉庫中又分成了3種:
2.1 中央倉庫
2.2 私服
2.3 其它公共庫
有個maven私服可以很方便地管理我們的jar包和發布構建到遠程倉庫,本文就介紹了如何在linux下一步步使用nexus搭建maven私服。
私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服之后,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。

首先安裝好jdk 、maven
我這里安裝的JDK 、maven版本信息如下:
- [root@localhost bin]# java -version
- java version "1.7.0_79"
- Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
- Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
- [root@localhost bin]# mvn -v
- Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00)
- Maven home: /home/data/maven
- Java version: 1.7.0_79, vendor: Oracle Corporation
- Java home: /home/xuan/soft/jdk1.7.0_79/jre
- Default locale: en_US, platform encoding: UTF-8
- OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
這里附上,環境配置:
- #java
- export JAVA_HOME=/home/data/java
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
- #maven
- export MAVEN_HOME=/home/data/maven
- export MAVEN_HOME
- export PATH=${PATH}:${MAVEN_HOME}/bin
-
- #nexus
- export RUN_AS_USER=root
下載安裝
nexus下載地址:http://www.sonatype.org/nexus/go
解壓后會在同級目錄中,出現兩個文件夾:nexus-oss-webapp-1.8.0和sonatype-work,前者包含了nexus的運行環境和應用程序,后者包含了你自己的配置和數據。
nexus-2.12.0-01-bundle.tar.gz
- tar -zxvf nexus-2.12.1-01-bundle.tar.gz -C /home/xuan/soft/nexus
- [root@localhost soft]# tar -zxvf nexus-2.12.1-01-bundle.tar.gz
- nexus-2.12.1-01/
- nexus-2.12.1-01/nexus/
為了方便更新和切換版本,創建鏈接,更新或者切換版本只需更新鏈接即可:
- tar -zxvf nexus-2.12.1-01-bundle.tar.gz -C /home/xuan/soft/nexus
-
-
- [root@localhost nexus]# pwd
- /home/xuan/soft/nexus
- [root@localhost nexus]# ls
- nexus-2.12.1-01 sonatype-work
- [root@localhost nexus]#
-
- ln -s /home/xuan/soft/nexus /home/data/nexus
啟動nexus
- [root@localhost bin]# pwd
- /home/data/nexus/nexus-2.12.1-01/bin
- [root@localhost bin]# ./nexus
- Usage: ./nexus { console | start | stop | restart | status | dump }
- $ ./nexus start
- Starting Nexus OSS...
- Started Nexus OSS.
啟動成功:

查看控制台:
- [root@localhost bin]# ./nexus console
- ****************************************
- WARNING - NOT RECOMMENDED TO RUN AS ROOT
- ****************************************
- Running Nexus OSS...
- Nexus OSS is already running.
查看nexus日志:
- [root@localhost logs]# pwd
- /home/data/nexus/nexus-2.12.1-01/logs
- [root@localhost logs]# tail -f ./wrapper.log
- jvm 1 | 2016-05-20 06:50:10,655-0700 INFO [qtp1294005448-58] anonymous org.apache.http.impl.execchain.RetryExec - I/O exception (java.net.SocketException) caught when processing request to {s}->https://sonatype-download.global.ssl.fastly.net:443: Connection reset
配置nexus
訪問網址:http://yourhostname:8081/nexus
訪問網址:http://192.168.140.128:8081/nexus
右上角以admin登陸,默認用戶名/密碼:admin/admin123。

安裝過程中可能遇到的錯誤:
1、進入啟動目錄,啟動時不成功 提示
****************************************
WARNING – NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
大概意思就是要在環境配置export RUN_AS_USER=root,臨時配置
也可以在vi /etc/profile 文件末尾里添加export RUN_AS_USER=root 永久配置
2、訪問不了虛擬機的,需要關閉防火牆
centos從7開始默認用的是firewalld,這個是基於iptables的,雖然有iptables的核心,但是iptables的服務是沒安裝的。
所以你只要停止firewalld服務即可:
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
如果你要改用iptables的話,需要安裝iptables服務:
sudo yum install iptables-services
sudo systemctl enable iptables && sudo systemctl enable ip6tables
sudo systemctl start iptables && sudo systemctl start ip6tables
下一步進行Maven 與私服的測試:
~/.m2/settings.xml
在maven的setting.xml文件增加使用nexus私服配置:
maven 私服地址 http://192.168.1.102:8081/nexus/content/groups/public/
maven 中央倉庫地址:http://repo1.maven.org/maven2 (沒有私服鏡像可以中央倉庫的)
- <settings>
- <mirrors>
-
- <mirror>
-
- <id>nexus</id>
- <mirrorOf>*</mirrorOf>
- <url>http://192.168.1.102:8081/nexus/content/groups/public/</url>
- </mirror>
- </mirrors>
- <profiles>
-
- <profile>
- <id>nexus</id>
-
-
- <repositories>
- <repository>
- <id>central</id>
- <url>http://central</url>
- <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- <repository>
- <id>spring-release</id>
- <name>Spring Maven Release Repository</name>
- <url>http://repo.springsource.org/libs-release</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <url>http://central</url>
- <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
- <activeProfiles>
-
- <activeProfile>nexus</activeProfile>
- </activeProfiles>
-
-
- <servers>
- <server>
- <id>releases</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- <server>
- <id>snapshots</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- </servers>
-
- </settings>
測試效果圖:
1、在項目的pom.xml文件 加入maven依賴測試

2、私服上的依賴

3、項目本地的依賴

參考文檔:
http://tianweili.github.io/blog/2015/03/17/linux-nexus-maven-private-server/
maven 使用私服的參考文檔:
http://blog.csdn.net/liujiahan629629/article/details/39272321
本地上傳依賴到nexus服務器的兩種方式:
1、通過網頁上傳
2、通過maven的方式depoly
在項目的pom.xml 加入如下配置 (這里不做詳細介紹,可以參考上面的資料)
- <distributionManagement>
- <repository>
- <id>releases</id>
- <name>Nexus Release Repository</name>
- <url>http://192.168.1.102:8081/nexus/content/repositories/releases/</url>
- </repository>
- <snapshotRepository>
- <id>snapshots</id>
- <name>Nexus Snapshot Repository</name>
- <url>http://192.168.1.102:8081/nexus/content/repositories/snapshots/</url>
- </snapshotRepository>
- </distributionManagement>
運行命令:mvn package deploy 它會根據項目的pom.xml文件的配置如下 在私服生成些war包 (暫不知道在那些場景應用)
<groupId>com.xuan</groupId>
<artifactId>spring</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>springmvc_hibernate</name>
在私服生成
/com/xuan/spring/xxxxx.pom
/com/xuan/springxxxxx.war