因为看了很多比较水的总结,我这里亲测了下,终于搞定,希望可以帮到更多人,大家可以随便转载
搭建私服
1、 搭建原因,有些公司限制上外网,但是开发项目需要下载jar包,所以通过nexus搭建个maven私服,方便大家开发.
2、 环境(我的虚拟机中centos版本6.4 32位)
注:(我也搭建了centos6.5 64位的, jdk-7u79-linux-x64.tar.gz, nexus-2.1.2-bundle.tar.gz,用下面的方法搭建也成功了)
Jdk:jdk-7u7-linux-i586.tar.gz
私服安装包:nexus-2.1.2-bundle.tar.gz
(如果不行就把maven也安装上)
3、 开发过程
3.1、jdk安装过程
先将jdk复制到这个路径下,然后进入
cd /usr/jdk
进行解压缩
tar –zxvf jdk-7u7-linux-i586.tar.gz
3.2、配置环境变量
vim /etc/profile
添加一下下面变量
export JAVA_HOME=/usr/jdk/jdk1.7.0_07(这个添加你jdk的路径)
export PATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
保存退出 esc :wq 然后回车
刷新一下以便生效
source /etc/profile
3.3、验证是否安装成功
输入java –version
得到如下信息就成功了
javaversion "1.7.0_07"
Java(TM)SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) Client VM (build 23.3-b01, mixed mode)
3.4、maven私服安装过程
将安装包上传到/usr/nexus中
tar xzvf nexus-2.1.2-bundle.tar.gz
会解压出两个文件夹nexus-2.1.2和sonatype-work
启动nexus 执行
cd /usr/nexus/nexus-2.1.2/bin/jsw/linux-x86-32/
如果是64位就cd /usr/nexus/nexus-2.1.2/bin/jsw/linux-x86-64/
./nexus start
查看是否启动成功一般不会成功,哈哈(这也是我亲测的)
需要设置自启动
cd /etc/init.d/
cp /home/nexus/nexus-2.1.2/bin/jsw/linux-x86-32/nexus nexus
如果是64位的就:cp /home/nexus/nexus-2.1.2/bin/jsw/linux-x86-64/nexus nexus
编辑/etc/init.d/nexus文件,添加一下变量定义:
vi /etc/init.d/nexus
加入
NEXUS_HOME=/home/nexus/nexus-2.1.2
PLATFORM=linux-x86-64
PLATFORM_DIR=”${NEXUS_HOME}/bin/jsw/${PLATFORM}”
修改一下变量
WRAPPER_CMD=”{PLATFORM_DIR}/wrapper”
WRAPPER_CONF=”{PLATFORM}/../conf/wrapper.conf”
PIDDIR=”{NEXUS_HOME}”
修改如下变量,设置启动用户为root
PUN_AS_USER=nexus
指定命令添加nexus自启动服务
chkconfig –add nexus
chkconfig –levels 345 nexus on
再启动看下
注:启动前先加入命令
export RUN_AS_USER=root
启动:./nexus start
查看控制填信息./nexus console
出现
Running Nexus OSS...
Nexus OSS is already running.
已经启动
查看nexus日志:
cd nexus-2.1.2/logs
ls
wrapper.log
tail –f wrapper.log
访问http://192.168.1.131:8081/nexus能访问就成功了(ip用你的)
3.6、配置nexus的防火墙
执行 vi/etc/sysconfig/iptables
插入一下两行
-A INPUT –m state –state NEW –m tcp –ptcp –dport 8081 –j ACCEPT
然后设置防火墙开启
chkconfig iptables on
然后重启系统,执行 reboot
3.7、通过浏览器打开此url
http://192.168.1.131:8081/nexus ,出现管理界面
右上角进行登录admin/admin123
3.8、登录成功后,就可以在昨天的菜单配置了
3.9、如果这台机器需要通过代理才能访问外网,必须先设置代理服务器,
3.10、可以设置repository了
在views/RepositoriesàRepositories中
Nexus中有三种仓库分别是proxy、hosted、group;
Proxy是远程仓库的代理,如果用户向这个proxy请求一个artifact,这个proxy就会先在本地找,如果找不到就去远程仓库下载,然后返回给用户,具有中转作用。
Hosted是宿主仓库,用户可以把自己的构件,deploy到hosted中,也可以手工上传到hosted中。比如ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted中
Group是仓库组,maven中没这个概念,nexus独有的,目的是对多个仓库聚合,对用户暴露一个地址,这样用户只需配置一个地址
Nexus装好后,就能对repository进行一些操作了
3.11、 关键的一个配置,修改central的配置,因为大部分构件,都是通过proxy得到。Download Remote indexes 修改成true 这样nexus才能下载索引
3.12 配置hosted repository
一般会配置3个hostedrepository,分别是3rd party、snapshots、releases;分别用来保存第三方jar(例如ojdbc6.jar),项目组内的快照,项目组内部的发布版
一般snapshots中deploymentpolicy 设置为allow redeploy。而releases和3rd party会设置为禁止
3.13配置group repository
其实这个仓库是虚拟的,主要对proxy、hosted进行聚合,对外暴露一个统一的地址。
3.14、配置用户密码
在security—>users中配置,在deployment用户上点击右键,选择setpassword,然后设置密码
3.15、在用户机器上配置setting.xml
一般在C:\Users\myj\.m2\settings.xml中
Xml代码
1. <?xml version="1.0" encoding="UTF-8"?>
2.
3. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
6.
7. <servers>
8.
9. <server>
10. <id>nexus-snapshots</id>
11. <username>deployment</username>
12. <password>deployment</password>
13. </server>
14.
15. </servers>
16.
17. <mirrors>
18.
19. <mirror>
20. <id>nexus</id>
21. <name>internal nexus repository</name>
22. <url>http://10.78.68.122:9090/nexus-2.1.1/content/groups/public/</url>
23. <mirrorOf>central</mirrorOf>
24. </mirror>
25.
26. </mirrors>
27.
28. </settings>
这里主要配置了两个元素<mirrors>和<servers>
主要是<mirrors>中id位nexus的镜像,url就是group的rul,镜像的目标是central
Maven的超级pom中,里面配置了这样一段:
1. <repositories>
2. <repository>
3. <id>central</id>
4. <name>Central Repository</name>
5. <url>http://repo.maven.apache.org/maven2</url>
6. <layout>default</layout>
7. <snapshots>
8. <enabled>false</enabled>
9. </snapshots>
10. </repository>
11. </repositories>
12.
13. <pluginRepositories>
14. <pluginRepository>
15. <id>central</id>
16. <name>Central Repository</name>
17. <url>http://repo.maven.apache.org/maven2</url>
18. <layout>default</layout>
19. <snapshots>
20. <enabled>false</enabled>
21. </snapshots>
22. <releases>
23. <updatePolicy>never</updatePolicy>
24. </releases>
25. </pluginRepository>
26. </pluginRepositories>
主要是,当本地的maven项目,找不到需要的构件(包括jar包和插件)的时候,默认会到central里面获取
所以刚刚我们在setting.xml中配置的镜像仓库(<mirrorof><mirrorof>),id也是central,这样本地maven项目对centralrepository的请求,就会赚到镜像仓库上,也就是设置的nexus私服上
由于我们在项目的pom里,不会再配置其他的<repositories>和<pluginRepositories>元素,只配置了一个central的mirror,这样就组织了访问外网;如果pom中还配置了其他的外网仓库,比如jboss repository等,可以把<mirrorOf>改为*
至于<servers>元素,是因为我们把项目内部构件上传到nexus仓库时候,nexus会进行权限控制,所以这里需要设置权限相关的信息;注意这里的<id>nexus-snapshots<id>,
和后面maven工程里的pom设置是一致的
3.16、配置maven项目的pom文件
下面是简化后的pom文件
1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3.
4. <modelVersion>4.0.0</modelVersion>
5. <groupId>com.huawei.inoc.wfm.task</groupId>
6. <artifactId>task-sla</artifactId>
7. <version>0.0.1-SNAPSHOT</version>
8. <name>task-sla</name>
9.
10. <!-- 配置部署的远程仓库 -->
11. <distributionManagement>
12. <snapshotRepository>
13. <id>nexus-snapshots</id>
14. <name>nexus distribution snapshot repository</name>
15. <url>http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/</url>
16. </snapshotRepository>
17. </distributionManagement>
18.
19. </project>
这里配置的<distributionManagenment>元素,其中的<id>nexus-snapshots<id>,与前面说的setting.xml中的<servers>元素中的配置要一致
配置这个,是当执行mavendeploy时,就知道要将生成的构件部署到哪个远程仓库上,注意这里的url 是snapshots的地址:
http://192.168.1.131:8081/nexus/content/repositories/snapshots/
但是在nexus中,snapshots也是聚合到publicgroup里的,所以开发人员A
提交到snapshots的构件,开发人员B也能从publicgroup里获取到
帮到了记得评论
如果还是解决不了,可以在留言处写你qq号,我看到加你在解决
问题汇总:
1、如何测你linux不能联网,(如果不能联网私服是不能下载下来jar包的),
ping www.baidu.com 如果能ping通说明可以,
2、启动成功还是不能访问,需要看下是不是8081端口不能用,
vi /home/nexus/nexus-2.1.2/conf/nexus.properties 将里面的8081换成8080试试(因为我们公司的linux环境中没有开放8081,只允许8080端口)