linux(centos6.5 64位)中maven私服搭建

因为看了很多比较水的总结,我这里亲测了下,终于搞定,希望可以帮到更多人,大家可以随便转载

搭建私服

 

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、登录成功后,就可以在昨天的菜单配置了

linux(centos6.5 64位)中maven私服搭建
linux(centos6.5 64位)中maven私服搭建

 

3.9、如果这台机器需要通过代理才能访问外网,必须先设置代理服务器,

linux(centos6.5 64位)中maven私服搭建
linux(centos6.5 64位)中maven私服搭建

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才能下载索引

linux(centos6.5 64位)中maven私服搭建

 linux(centos6.5 64位)中maven私服搭建

3.12 配置hosted repository

一般会配置3个hostedrepository,分别是3rd party、snapshots、releases;分别用来保存第三方jar(例如ojdbc6.jar),项目组内的快照,项目组内部的发布版

 linux(centos6.5 64位)中maven私服搭建linux(centos6.5 64位)中maven私服搭建

一般snapshots中deploymentpolicy 设置为allow redeploy。而releases和3rd party会设置为禁止

 

3.13配置group repository

其实这个仓库是虚拟的,主要对proxy、hosted进行聚合,对外暴露一个统一的地址。

linux(centos6.5 64位)中maven私服搭建
linux(centos6.5 64位)中maven私服搭建

 

3.14、配置用户密码

在security—>users中配置,在deployment用户上点击右键,选择setpassword,然后设置密码

 linux(centos6.5 64位)中maven私服搭建linux(centos6.5 64位)中maven私服搭建

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端口)