Maven+Nexus环境实现Java打包环境部署

(1)Maven项目介绍

详细介绍请移步官网:
http://maven.apache.org/what-is-maven.htm
我们需要知道Maven的主要介绍信息:
    1.Maven是属于apache软件基金会下一个开源免费的项目,是跨平台的项目管理工具.
    2.Maven采用了一种被称之为Project Object Model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中.
    3.主要服务于Java平台的构建、依赖管理、项目管理。
    4.Maven提供给开发人员构建一个完整的生命周期框架,使用标准的目录结构和默认构建生命周期。
    5.POM.xml该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。
那么至于 Maven 功能很强大,我们需要简单了解下Maven 怎么样使用java项目的打包 ; 解决java项目打包过程中的依赖关系;如何让依赖关系的包下载的速度快,加快下载包的缓慢速度,因为默认有些包在国外服务器,这个文档是运维方向围绕着这个问题开展来的。
 
环境准备:
192.168.188.154    Jenkins
192.168.188.157    nexus / git

(2)部署Maven  【安装在Jenkins服务器上即可】

官网: http://maven.apache.org/download.cgi
清华镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/
1.创建软件包存放位置
[root@jenkins ~]# mkdir /server/scripts/tools
[root@jenkins tools]# ll
总用量 8296
-rw-r--r-- 1 root root 8491533 11月 18 2015 apache-maven-3.3.9-bin.tar.gz
 
2.解压软件包
[root@jenkins tools]# tar xf apache-maven-3.3.9-bin.tar.gz
 
3.移动软件到常用的目录
[root@jenkins tools]# mv apache-maven-3.3.9 /usr/local/
bin/     games/   lib/     libexec/ share/   
etc/     include/ lib64/   sbin/    src/     
 
4.去掉版本号做个连接
[root@jenkins tools]# ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
 
5.设定环境变量,使其命令不用找、软件包的位置
[root@jenkins tools]# echo "export PATH=/usr/local/maven/bin/:$PATH" >>/etc/profile
 
6.测试命令并查看版本
[root@jenkins tools]# mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_181-amd64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-229.el7.x86_64", arch: "amd64", family: "unix"
 
 
maven的常用命令: 
[root@jenkins bin]# ll /usr/local/maven/bin/
总用量 32
-rw-r--r-- 1 root root  230 11月 11 2015 m2.conf
-rwxr-xr-x 1 root root 7383 11月 11 2015 mvn
-rw-r--r-- 1 root root 6067 11月 11 2015 mvn.cmd
-rwxr-xr-x 1 root root 1815 11月 11 2015 mvnDebug
-rw-r--r-- 1 root root 1513 11月 11 2015 mvnDebug.cmd
-rwxr-xr-x 1 root root 1843 11月 11 2015 mvnyjp
 

(3)使用maven进行打包

    有的java项目是没有直接打好包的 例如 jar war包等,一般会收到tar包,需要运维来进行打包,那么就用到下面的Maven打包工具。
 
maven的参数和说明:
package  : 打包 源码编译之后 使用jar格式打包,下载的依赖包在.m2内
clean    : 清除前一次的编译结果,恢复编译原始环境,使用时清除在打包
validate : 验证包的完整性
compile  : 编译项目源码
test     : 测试编译后的源码
install  : 把包安装在本地,也可以用作好的包做其他的项目的依赖
deploy   : 部署在集成或发布环境中完成,将最终的软件包复制到远程存储仓库,分享使用。
mvn - v    :  查看版本 相对应的java maven 和内核信息
 
打包流程:
1.将源码包下载到本地,解压缩
2.cd 源码内
3.mvn package       #这里需要的是 下载的包默认是在国外 速度很慢,需要更改到国内或者搭建私服。
 
常用的命名:
[root@jenkins ~]# mvn package    #这种方式打出的包默认是 jar包,默认下载maven的中央仓库下载依赖和插件等,这里的速度会有点慢,因为是访问的国外的地址拉倒本地。后续需要调整为私服方式,如果java代码多的情况下
[root@jenkins ~]# mvn clean
[root@jenkins ~]# mvn test
[root@jenkins ~]# mvn install
[root@jenkins ~]# mvn -v         #查看版本 相对应的java maven 和内核信息
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_181-amd64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-229.el7.x86_64", arch: "amd64", family: "unix"
 
[root@jenkins ~]# ll target/
-rw-r--r-- 1 root root 3430 2020-3-19 23:39 world-1.0-SNAPSHOT.jar    #这种的jar包 或者是war包 是可以直接发布到线上使用的。 默认是使用Tomcat环境发布。

 

 

(4)部署Maven私服nexus

 
解决慢的方式:
    1.搭建私服
    2.使用阿里云的源 (java的项目不是特别多的情况,可以使用)
 
说明:
私服为的是解决使用Maven 为java打包的时候下载依赖处理起来较慢,因为默认走Maven的中央仓库有些包再国外,下载起来会慢延长打包时间。

【1】先配置阿里云的Maven中央仓库,修改Maven的主配置文件使其全局生效

1.找到主配置文件
[root@jenkins conf]# ll  /usr/local/maven/conf/settings.xml    #这个是主配置文件
总用量 16
drwxr-xr-x 2 root root    36 11月 11 2015 logging
-rw-r--r-- 1 root root 10216 11月 11 2015 settings.xml
-rw-r--r-- 1 root root  3649 11月 11 2015 toolchains.xml
 
2.拷贝原配置文件
[root@jenkins conf]# cp settings.xml settings.xml.bak
[root@jenkins conf]# ls
logging  settings.xml  settings.xml.bak  toolchains.xml
 
3.修改配置文件在mirrors标签下增加
 
全局有效:
[root@jenkins conf]# vim settings.xml
     
       <id>nexus-aliyunid>
       nexus-aliyun
       http://maven.aliyun.com/nexus/content/groups/public/
       *  
       

 

 
添加完配置之后不需要重启服务,可以直接到项目内,重新执行 mvn package  进行打包,这样就会去 阿里源的拉取缺少的包和依赖,执行的结果 也是很快的。
这里附录配置截图,免得搞混;配置


【2】 搭建私服nexus  默认端口8081

    安装包下载地址:  https://www.sonatype.com/download‐oss‐sonatype
    配置私服需要注意的是:
        1. 使用java环境
        2.生效规则
                ① 在Maven的主配置文件中配置,全局生效
                ② 在项目源码包内的pom.xml配置,局部生效,也就是对当前的这个项目有效,其他的项目无效
nexus机器上配置:
1.上传安装所需包
[root@nexus tools]# ll
总用量 286068
-rw-r--r-- 1 root root 170023183 3月   8 18:47 jdk-8u181-linux-x64.rpm
-rw-r--r-- 1 root root 122904706 3月   8 18:48 nexus-3.13.0-01-unix.tar.gz
 
2.java环境安装
[root@nexus tools]# rpm -ivh jdk-8u181-linux-x64.rpm
警告:jdk-8u181-linux-x64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8-2000:1.8.0_181-fcs        ################################# [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
 
3.安装命令
[root@nexus tools]# rpm ‐ivh jdk-8u181-linux-x64.rpm
[root@nexus tools]# tar xf nexus-3.13.0-01-unix.tar.gz
[root@nexus tools]# mv nexus‐3.13.001 /usr/local/
[root@nexus tools]# ln ‐s /usr/local/nexus‐3.13.001/ /usr/local/nexus
[root@nexus tools]# /usr/local/nexus/bin/nexus start        #启动服务
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus   #正在启动中
 
[root@nexus tools]# /usr/local/nexus/bin/nexus status
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
nexus is running.  #启动成功
 
4.默认端口是8081 
[root@nexus tools]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      29575/java          
tcp        0      0 127.0.0.1:40561         0.0.0.0:*               LISTEN      29575/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1028/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1028/sshd      
 
 
 

 

【3】登陆web界面

    默认用户:admin
    默认密码:admin123
 

<1>. 查看基本信息

这里面的盘容量不够的话,可以扩容硬盘加大容量。
 

<2>. 更改代理服务,转换代理下载路径

 

<3>.修改中央仓库下载链接

修改代理也是去 阿里源 上面下载,和之前的配置 Maven的代理地址一样,那么和之前的配置有什么区别呢? 可以这么理解为这个(私服 nexus) 就相当于我们常用的yum源。
原地址:https://repo1.maven.org/maven2/
修改后的阿里云地址是 : http://maven.aliyun.com/nexus/content/groups/public
 

<4>. 找到私服地址 ,之后添加到Maven的主配置文件中,用于下载java的依赖关系

<5>.私服地址如下,这个地址配到Maven中即可,

说明:
    这样就是实现了,Maven+私服nexus 解决java的打包依赖的关系了。当每次Maven执行打包java代码的时候,第一次请求到nexus后,本地私服没有的包会优先去阿里下载缓存到本地,然后提供给Maven使用,在之后的话,打包本地有就不会去阿里下载,直接使用本地的依赖包解决java打包的依赖的关系了。请求顺序见<6>这个图。
http://192.168.188.157:8081/repository/maven-public/

<6>. 缓存请求依赖关系顺序

(5) 配置整合Maven+nexus私服

 
由于Jenkins和Maven在一台主机上 192.168.188.154; nexus是另外的一台主机 要搞清环境。
 
 
整合nexus+Maven的配置:
 
 
1. 登陆到Maven服务器,修改配置settings.xml主配置文件
[root@jenkins conf]# pwd
/usr/local/maven/conf
[root@jenkins conf]# ll
总用量 52
drwxr-xr-x 2 root root    36 11月 11 2015 logging
-rw-r--r-- 1 root root 11620 3月  19 11:43 settings.xml
-rw-r--r-- 1 root root 10399 3月  19 07:32 settings.xml.ailiyun.bak
-rw-r--r-- 1 root root 11620 3月  19 11:44 settings.xml.all
-rw-r--r-- 1 root root 10216 3月  19 04:08 settings.xml.bak
-rw-r--r-- 1 root root  3649 11月 11 2015 toolchains.xml
[root@jenkins conf]# vim settings.xml
将以下配置添加到主配置文件即可完成整合,之后就可以实现的是 java代码打包,通过gitlib+Jenkins自动上线到web站点。
 
2. 找到 标签,添加nexus默认的认证信息
 
    
        <id>My-nexus-releasesid>
        admin
        admin123
    
 
    
        <id>My-nexus-snapshotid>
        admin
        admin123
     
 
 
3.找到标签 ,添加镜像
     
       <id>nexusid>
       nexus
       *
       http://192.168.188.157:8081/nexus/content/groups/public/
     
       
4.找到标签,添加仓库信息:
    
          
        <id>nexusid>
       
        
          <id>centralid>
          http://192.168.188.157:8081/repository/maven-public/
          true
          true
        
      
     
      
       <id>centralid>
       http://192.168.188.157:8081/repository/maven-public/
       true
       true
      
     
   
 
 
5.找到activeProfiles 激活仓库
 
   
   nexus
   
 
 

(6)整合视图,配置有出入的话,参考(5)的配置为准

1.>认证信息

2.>nexus 私服地址

3.>添加仓库配置

4.>激活配置仓库

 
 
 

 

你可能感兴趣的:(Maven+Nexus环境实现Java打包环境部署)