创建Maven项目
简介
Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。
开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。
Apache的开源项目主要服务于JAVA平台的构建、依赖管理、项目管理。
Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。
1、下载Maven 3安装包
官网:http://maven.apache.org/download.cgi
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/
2、安装Maven
[root@genkins ~] # ll
-rw-r--r-- 1 root root 8491533 May 6 15:54 apache-maven-3.3.9-bin.tar.gz
[root@genkins ~] # tar xf apache-maven-3.3.9-bin.tar.gz
[root@genkins ~] # mv apache-maven-3.3.9 /usr/local/maven
[root@genkins ~] # ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
[root@genkins ~] # /usr/local/maven/bin/mvn --version
[root@genkins ~] # cd hello-world-war/
[root@genkins hello-world-war] # tree .
.
├── dist
│ └── hello-world.war
├── pom.xml
├── README.md
└── src
└── main
└── webapp
├── index.jsp
└── WEB-INF
└── web.xml
[root@genkins hello-world-war] # mvn package #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
3、编辑/etc/profile文件,在末尾添加
[root@genkins ~] # vim /etc/profile
export PATH="$PATH:/usr/local/sonar-scanner/bin:/usr/local/maven/bin:"
[root@genkins ~] # source /etc/profile
[root@genkins ~] # mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_221, vendor: Oracle Corporation
Java home: /app/jdk1.8.0_221/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
进入目录执行打包命令
validate(验证): 验证项目正确,并且所有必要信息可用。
compile(编译): 编译项目源码
test(测试): 使用合适的单元测试框架测试编译后的源码。
package(打包): 源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
integration-test(集成测试): 如果有需要,把包处理并部署到可以运行集成测试的环境中去。
verify(验证): 进行各种测试来验证包是否有效并且符合质量标准。
install(安装): 把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
deploy(部署): 在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
mvn clean (清除) : 清除上次编译的结果
mvn package -Dmaven.test.skip=true 跳过测试用例
1 打包
[root@genkins hello-world-war] # mvn package
2 清除
[root@genkins hello-world-war] # mvn clean
3 加速打包
[root@genkins hello-world-war] # cd /usr/local/maven/conf/
[root@genkins conf] # vim settings.xml
在158行后面
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
[root@genkins conf] # cd -
[root@genkins hello-world-war] # mvn package
[root@genkins hello-world-war] # mvn clean
4 报错处理
[root@genkins hello-world-war] # rm -rf /root/.m2
[root@genkins hello-world-war] # mvn package
创建一个项目
推送远程仓库
[root@gitlab ~] # ll
-rw-r--r-- 1 root root 18945 May 6 16:47 hello-world-war.tar.gz
[root@gitlab ~] # tar xf hello-world-war.tar.gz
[root@gitlab ~] # cd hello-world-war/
[root@gitlab hello-world-war] # git remote remove origin
[root@gitlab hello-world-war] # git remote
[root@gitlab hello-world-war] # git remote add origin git@10.0.0.200:oldboy/java.git
[root@gitlab hello-world-war] # git push -u origin master
PS 在Jenkins也是可以推送的,但是由于分支保护的原因,就在主节点上推送了.
推送成功的显示结果
登陆10.0.0.201Jenkins网站
创建一个项目
写完之后返回到配置页面 刷新 把信息再次填好,最后保存
[root@genkins hello-world-war] # ll /var/lib/jenkins/workspace/
total 12
drwxr-xr-x 9 root root 4096 Apr 30 11:03 my-deploy-rollback
drwxr-xr-x 2 root root 6 Apr 29 23:58 my-deploy-roolback
drwxr-xr-x 10 root root 4096 Apr 30 18:32 my-freestyle-job
drwxr-xr-x 6 root root 105 May 6 17:52 my-maven-job #多了这个文件
drwxr-xr-x 9 root root 4096 Apr 30 10:59 tag-job
在web服务器上安装tomcat
web01安装tomcat
[root@web01 ~] # rpm -ivh jdk-8u181-linux-x64.rpm
[root@web01 ~] # tar xf apache-tomcat-8.0.27.tar.gz
[root@web01 ~] # mv apache-tomcat-8.0.27 /usr/local/tomcat
[root@web01 ~] # vim /usr/java/jdk1.8.0_181-amd64/jre/lib/security/java.security
在117行: securerandom.source=file:/dev/urandom
[root@web01 ~] # /usr/local/tomcat/bin/startup.sh
网页访问 10.0.0.7:8080 出现tomcat
结果出现tomcat页面
在
[root@genkins hello-world-war] # cd /server/scripts/
[root@genkins scripts] # cat java.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/my-maven-job"
WEB_DIR="/usr/local/tomcat/webapps"
get_code_scp(){
ssh 10.0.0.7 "cd $WEB_DIR && mkdir java-${git_version}"
cd $CODE_DIR && scp jesns-web/target/*.war 10.0.0.7:$WEB_DIR/java-${git_version}
}
code_tarxf(){
ssh 10.0.0.7 "cd $WEB_DIR/java-${git_version} && unzip *.war && rm -rf *.war"
}
ln_html(){
ssh 10.0.0.7 "cd $WEB_DIR/ && rm -rf ROOT && ln -s java-${git_version} ROOT && /usr
/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh"
}
main(){
get_code_scp;
code_tarxf;
ln_html;
}
if [ "$deploy_env" == "deploy" ];then
if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
echo "构建失败该 $git_version 版本号已部署"
else
main
fi
elif [ "$deploy_env" == "rollback" ];then
ln_html
fi
ssh 10.0.0.7 "rm -rf /usr/local/tomcat/webapps/ROOT/*"
scp target/hello-world-war-1.0.0.war 10.0.0.7:/usr/local/tomcat/webapps/ROOT/
ssh 10.0.0.7 "cd /usr/local/tomcat/webapps/ROOT/ && unzip hello-world-war-1.0.0.war"
ssh 10.0.0.7 "/usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh"
最后在web01出现的界面
[root@gitlab hello-world-war] # vim src/main/webapp/index.jsp
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World! v5.0</h1> #改为5.0版本
<p>
It is now
<%= new java.util.Date() %></p>
<p>
You are coming from
<%= request.getRemoteAddr() %></p>
</body>
[root@gitlab hello-world-war] # git add .
[root@gitlab hello-world-war] # git commit -m "v5.0"
[root@gitlab hello-world-war] # git push -u origin master
最后到Jenkins进行构建
网页看到显示5.0