[toc]

什么是maven

编辑代码的工具

  • nginx
    • 编译 make
  • mysql
    • 编译 cmake gmake
  • java
    • maven
    • ant
  • 跑java代码的容器
    • tomcat
    • resin 比较适合老手

使用maven的构建环境

环境

主机名 外网IP 内网IP 应用 环境
gitlab 10.0.0.91 172.16.1.91 gitlab git 运维
jenkins 10.0.0.92 172.16.1.91 jenkins jdk maven 运维
web01 10.0.0.7 172.16.1.7 tomcat jdk 测试
web02 10.0.0.8 172.16.1.8 tomcat jdk 生产

部署tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 安装tomcat和jdk
yum install -y tomcat
yum install -y tomcat
yum install -y java
yum install -y java

# 启动服务
systemctl start tomcat
systemctl start tomcat

# 检查端口
netstat -lntup
tcp6 0 0 :::8080 :::* LISTEN
20175/java

# 添加网页页面
vim /var/lib/tomcat/webapps/ROOT/index.jsp
111

# 访问浏览器
10.0.0.7:8080
10.0.0.8:8080

image-20230521192753743

image-20230521192759215

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 上传开发提供的代码到gitlab
rz -E

# 查看文件
ll
-rw-r--r-- 1 root root 18945 May 19 10:26 hello-world-war.tar.gz

# 解压 (创建java项目的git仓库)
tar xf hello-world-war.tar.gz

# 进入java项目目录
cd hello-world-war

# 查看当前仓库状态
git status

# 查看当前仓库日志
git log

# 查看当前仓库标签
git tag

image-20230521200927214

image-20230521200930835

Git 全局设置

1
2
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

添加远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 添加远程仓库
git remote add origin git@gitlab.xxx.com:root/hello-world.git

# 查看仓库配置文件
cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@10.0.0.200:test/hello-world.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

## 改名即可
git remote add hello git@gitlab.xxx.com:root/hello-world.git

## 推送所有
git push -u hello --all

image-20230521201707144

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 源代码
cat /root/hello-world-war/src/main/webapp/index.jsp
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World! v1.0</h1>
<p>
It is now
<%= new java.util.Date() %></p>
<p>
You are coming from
<%= request.getRemoteAddr() %></p>
</body>

手动代码上线java项目

  1. 从git中拉取到jenkins
  2. 进入jenkins的工作目录
  3. 编译代码
  4. 推送代码

web

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 查看web机器上的java版本
java -version

# 怎么去编译
maven
正常使用jenkins把gitlab的代码拉下来
然后编译
maven装在jenkins上

# jenkins安装maven 也是需要jdk
yum install -y maven

# maven查看版本
mvn -version

# jenkins换源
vim /etc/maven/settings.xml
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

# gitlab换源
vim /etc/maven/settings.xml
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

# 在java文件目录编译
cd hello-world-war && mvn clean package

# 传输到10.0.0.7
scp /root/hello-world-war/target/hello-world-war-1.0.0.war 172.16.1.7:/opt/

# 只要包放在站点目录下即可
cp /opt/hello-world-war-1.0.0.war /usr/share/tomcat/webapps/

# 浏览器访问http://10.0.0.7:8080/hello-world-war-1.0.0/

image-20230521202908993

1
2
3
4
5
6
7
8
9
10
11
# 优化
unzip /opt/hello-world-war-1.0.0.war -d hello-world-war-1.0.0

# 删除原tomcat部署目录下的文件
rm -fr /var/lib/tomcat/webapps/ROOT

# 创建软连接
ln -s /opt/hello-world-war-1.0.0 /var/lib/tomcat/webapps/ROOT

# 浏览器访问
10.0.0.7:8080

image-20230521203202811

自动代码上线

配置软件路径

  • jenkins要知道 maven装哪里了
  • 保存下来
  • 去jenkins上配置maven

image-20230521203255739

image-20230521203258981

image-20230521203301606

image-20230521203304592

image-20230521203307105

查看HOME路径

image-20230521203311609

image-20230521203350177

创建项目

image-20230521203223625

image-20230521203227454

image-20230521203229923

image-20230521203232761

image-20230521203235535

image-20230521203238540

image-20230521203401536

配置运行级别

image-20230521203405188

image-20230521203408696

image-20230521203410752

image-20230521203412943

image-20230522101035156

编写脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
vim /var/lib/jenkins/scripts/deploy_hello.sh
#!/bin/bash
code_dir='/data/hello_code'
war_version=`awk -F '[<>]+' '/version/{print $3}' /var/lib/jenkins/workspace/maven-hello/pom.xml | head -1`
war_pkg="hello-world-war-${war_version}.war"
build_dir="${WORKSPACE}/target"
soft_link='/usr/share/tomcat/webapps/ROOT'
dev_server='172.16.1.7'
prod_server='172.16.1.8'
test_server='172.16.1.9'

deploy(){
for ip in $1;do
ssh ${ip} "mkdir -p ${code_dir}"
ssh ${ip} "rm -fr ${code_dir}/hello*"
scp ${build_dir}/${war_pkg} ${ip}:${code_dir}
ssh ${ip} "cd ${code_dir} && /usr/bin/unzip ${war_pkg} -d ${war_pkg%.*}"
ssh ${ip} "rm -fr ${soft_link}"
ssh ${ip} "ln -s ${code_dir}/${war_pkg%.*} ${soft_link}"
done
}

case $env in
dev)
deploy $dev_server
;;
test)
deploy $test_server
;;
prod)
deploy $prod_server
;;
esac