(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.0‐01 /usr/local/ [root@nexus tools]# ln ‐s /usr/local/nexus‐3.13.0‐01/ /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> 3.找到admin admin123 标签 ,添加镜像 <id>nexusid> 4.找到nexus * http://192.168.188.157:8081/nexus/content/groups/public/ 标签,添加仓库信息: <id>nexusid> 5.找到activeProfiles 激活仓库<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 nexus
(6)整合视图,配置有出入的话,参考(5)的配置为准
1.>认证信息
2.>nexus 私服地址
3.>添加仓库配置
4.>激活配置仓库