一、软件准备
1、apache-maven-3.0-bin.tar.gz 下载地址:http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0-bin.tar.gz

2、nexus-3.2.0-01-unix.tar.gz
下载地址:http://nexus.sonatype.org/downloads/

二、maven安装配置
1、创建需要操作maven的用户组以及用户(如果用root用户安装不用创建)
#groupadd configer //创建用户组
#useradd -g configer configer //创建用户并指定用户组
#passwd configer //为用户分配密码

2、创建解压目录,并将apache-maven-3.0-bin.tar.gz文件解压到指定目录

#cd /opt
#mkdir maven
#chown -R configer:configer /opt/maven
#chmod 755 /opt/maven
#su -l configer
#tar -zvxf apache-maven-3.0-bin.tar.gz

2、配置环境变量

#vi /home/configer/.bash_profile

在文件中添加如下行:

M2_HOME=/opt/maven/apache-maven-3.0
export M2_HOME
PATH=$PATH:$M2_HOME/bin
export PATH

3、查看版本

#cd /opt/maven/apache-maven-3.0/bin
#mvn --version


如果显示版本信息,应该会在${user}目录下创建.m2目录

4、查看.m2目录
#cd /home/configer/.m2
如果没有.m2目录,则可以手动添加一个
#mkdir .m2

5、如果需要把maven的repository目录指定到其他目录,则修改maven安装目录下conf中的配置文件settings.xml文件

#vi /opt/maven/apache-maven-3.0/conf/settings.xml
将文件中<localRepository>....</localRepository>的注释打开

或者在文件中增加 在这个注释下增加
<localRepository>your repository path</localRepository>


二、搭建nexus私服
1、解压 nexus-3.2.0-01-unix.tar.gz 文件到指定目录

#tar -zvxf nexus-3.2.0-01-unix.tar.gz

解压后有两个目录:
nexus-3.2.0-01 -- nexus服务目录
sonatype-work -- nexus工作目录

2、自定义配置
1) 修改端口号
# vi nexus-3.2.0-01/etc/nexus-default.properties
修改 application-port=8081 改成自定义的端口即可

2) 开发端口
iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

3)修改用户及密码
在 security->Users-> More ->Change Password

2、启动nexus
#cd /opt/maven/nexus-3.2.0-01/bin

#./nexus start

重启:
#./nexus restart

停止:
#./nexus stop

3、运行nexus
在浏览器中输入:http://localhost:8081/nexus
就可以看到nexus 的主页,点击右上角Log in
默认用户名和密码是:admin/admin123

运行后会自动生成一个nexus工作目录sonatype-work,nexus下载的jar包会存放在
sonatype-work/nexus/storage中

4、配置
1)点击左侧菜单Repositories
分别将右侧列表中

Apache Snapshots 

 Codehaus Snapshots 

 Maven Central



三个repository 的Download Remote Index 配置改为True,并保存设置,
然后在列表中分别右键点击三个Repository,点击ReIndex

2)增加新的Repository,有一些比较常用jar包在nexus提供的repository中可能找不到,
一般比较常用的有

JBOSS的两个: 

 http://repository.jboss.org/maven2/ 
 http://repository.jboss.org/nexus/content/repositories/releases/ 


 SUN的: 

 http://download.java.net/maven/2/ 


 K-INT的: 

 http://developer.k-int.com/maven2/ 


 因为找juel:juel-impl:2.2.1 这个jar包,所以我还添加了一个自己找的: 

 http://repository.exoplatform.org/content/groups/public/



添加步骤:

点击Add->Proxy Repository->填写Repository ID, Repository Name, 以及Remote Storage Location 其他的默认即可。

3) 将新增的Repository添加到Public Repositories中
在Public Repositories 的Configuration中,将多选Select中的项全部添加到左边,然后保存。

4) 添加自己的jar包

在repository列表中有一个3rd party,也就是第三方jar包,点击会看到一个Artifact Upload选项卡,点击后,填写相应的信息。
GAV Definition 一般选择 GAV Parameters
然后添加Group:Artifact:Version:Package
示例 juel:juel-impl:2.2.1:jar


然后选择要上传的jar包,保存即可

5) nexus中设置代理服务器
选择左侧administrator菜单中的Server选项,在右侧打开的页面的中下部,有一个选择项:Default HTTP Proxy Settings(optional) 将复选框选中,填写相应的代理服务器信息即可。

6) 编写自己的settings.xml,文件内容如下:

<settings> 

 <proxies> 

 <proxy> 

 <id>normal</id> 

 <active>true</active> 

 <protocol>http</protocol> 

 <username>deployment</username> 

 <password>deploy</password> 

 <host>localhost:8081/nexus</host> 

 <port>80</port> 

 <nonProxyHosts>localhost:8081/nexus</nonProxyHosts> 

 </proxy> 

 </proxies> 


 <mirrors> 

 <mirror> 

 <!--This is used to direct the public snapshots repo in the 

 profile below over to a different nexus group --> 

 <id>nexus-public-snapshots</id> 

 <mirrorOf>public-snapshots</mirrorOf> 

 <url>http://localhost:8081/nexus/content/groups/public-snapshots</url> 

 </mirror> 

 <mirror> 

 <!--This sends everything else to /public --> 

 <id>nexus</id> 

 <mirrorOf>*</mirrorOf> 

 <url>http://localhost:8081/nexus/content/groups/public</url> 

 </mirror> 

 </mirrors> 


 <profiles> 

 <profile> 

 <id>development</id> 

 <repositories> 

 <repository> 

 <id>central</id> 

 <url>http://central</url> 

 <releases><enabled>true</enabled></releases> 

 <snapshots><enabled>true</enabled></snapshots> 

 </repository> 

 </repositories> 

 <pluginRepositories> 

 <pluginRepository> 

 <id>central</id> 

 <url>http://central</url> 

 <releases><enabled>true</enabled></releases> 

 <snapshots><enabled>true</enabled></snapshots> 

 </pluginRepository> 

 </pluginRepositories> 

 </profile> 

 <profile> 

 <!--this profile will allow snapshots to be searched when activated--> 

 <id>public-snapshots</id> 

 <repositories> 

 <repository> 

 <id>public-snapshots</id> 

 <url>http://public-snapshots</url> 

 <releases><enabled>false</enabled></releases> 

 <snapshots><enabled>true</enabled></snapshots> 

 </repository> 

 </repositories> 

 <pluginRepositories>


--------------------------------------------------------------------------------

遇到这种警告:
****************************************
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,临时配置
在命令行下输入:

export RUN_AS_USER=root

然后执行,就不会再提示了
./nexus start

---------------------------------------------------------------

Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下:

1、因为其中的rc.local是在完成所有初始化之后执行,因此可以把启动脚本写到里面;
2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入需要执行的脚本程序:
su -l $username -c "/nexus/nexus-2.8.0-05/bin/nexus start"


****注意下面几点说明****
1.component name的一些说明:
1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
2)maven-releases:私库发行版jar
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
2.Nexus默认的仓库类型有以下四种:
1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库);
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径);
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
3.Policy(策略):表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
4.Public Repositories下的仓库
1)3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去;
2)Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
3)Central: 用来代理maven中央仓库中发布版本构件的仓库
4)Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
5)Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
6)Releases: 内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本;
7)Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
所以自定义构建的仓库组代理仓库的顺序为:Releases,Snapshots,3rd party,Central。也可以使用oschina放到Central前面,下载包会更快。
5.Nexus默认的端口是8081,可以在etc/nexus-default.properties配置中修改。
6.Nexus默认的用户名密码是admin/admin123
7.当遇到奇怪问题时,重启nexus,重启后web界面要1分钟左右后才能访问。
8.Nexus的工作目录是sonatype-work(路径一般在nexus同级目录下)
# pwd
/usr/local
# ls nexus/
bin deploy etc lib LICENSE.txt NOTICE.txt public system
# ls sonatype-work/
nexus3
# ls sonatype-work/nexus3/
backup blobs cache db elasticsearch etc generated-bundles health-check instances keystores lock log orient port tmp

Nexus仓库分类的概念:
1)Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件
2)为了方便,Maven可以从仓库组下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容)