Git--09 创建Maven项目

目录

  • 1. 创建Maven项目
  • 2、创建Maven私服nexus
    • 01. 部署Maven
    • 02. 编译测试
    • 03. 部署Tomcat及数据库
    • 04. 创建一个jeesns项目
    • 05. Jenkins创建一个maven
  • 3. Pipeline项目
    • 01. 基础概念
    • 02. 创建pipeline项目

1. 创建Maven项目

? Maven是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。

? 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。

Apache的开源项目主要服务于Java平台的构建、依赖管理、项目管理。

Project Object Model,项目对象模型。通过xml格式保存的pom.xml文件。

该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。该文件是由开发维护,我们运维人员可以不用去关心。

mvn package #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下

2、创建Maven私服nexus

部署私服 xenus

下载https://www.sonatype.com/download‐oss‐sonatype

配置仓库两个选项

1、项目下的pom.xml配置、只生效当前的项目

2、在maven配置全局所有项目生效

上传JDK和nexus安装包

rpm ‐ivh jdk‐8u121‐linux‐x64.rpm

mv nexus‐3.13.0‐01 /usr/local/

ln ‐s /usr/local/nexus‐3.13.0‐01 /usr/local/nexus

/usr/local/nexus/bin/nexus start
10.0.0.202:8081 admin admin123
配置Maven全局配置文件
/usr/local/maven/conf/settings.xml
## 3.创建一个Maven项目
创建前上传代码到gitlab服务器,把java项目添加到gitlab仓库中

01. 部署Maven

官网: http://maven.apache.org/download.cgi

清华镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/maven/

**上传软件包**
[[email protected] ~]# ll
-rw-r--r-- 1 root root 8491533 2018-08-27 14:38 apache-maven-3.3.9-bin.tar.gz
**解压**
[[email protected] ~]# tar xf apache-maven-3.3.9-bin.tar.gz
**改变目录位置**
[[email protected] maven]# mv apache-maven-3.3.9 /usr/local/maven-3.3.9
**软连接**
[[email protected] maven]# ln -s /usr/local/maven-3.3.9 /usr/local/maven
[[email protected] ~]# cd /usr/local/maven
[[email protected] maven]# ll
total 32
drwxr-xr-x 2 root root 97 2019-11-20 21:55 bin
drwxr-xr-x 2 root root 42 2019-11-20 21:55 boot
drwxr-xr-x 3 root root 63 2015-11-11 00:38 conf
drwxr-xr-x 3 root root 4096 2019-11-20 21:55 lib
-rw-r--r-- 1 root root 19335 2015-11-11 00:44 LICENSE
-rw-r--r-- 1 root root 182 2015-11-11 00:44 NOTICE
-rw-r--r-- 1 root root 2541 2015-11-11 00:38 README.txt
**设置环境变量**
[[email protected] maven]# echo "export PATH=/usr/local/maven/bin/:$PATH" >>/etc/profile
[[email protected] maven]# source /etc/profile

**查看结果**
[[email protected] maven]# 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: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

02. 编译测试

上传一个简单的java项目包hello‐world.tar.gz进行解压

[[email protected] ~]# ll
-rw-r--r-- 1 root root 1325 2018-08-22 13:43 hello-world.tar.gz
[[email protected] ~]# tar xf hello-world.tar.gz
[[email protected] ~]# cd hello-world/
validate(验证):     验证项目正确,并且所有必要信息可用。
compile(编译):    编译项目源码
test(测试):         使用合适的单元测试框架测试编译后的源码。
package(打包):     源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。integration‐test(集成测试): 如果有需要,把包处理并部署到可以运行集成测试的环境中去。verify(验证):     进行各种测试来验证包是否有效并且符合质量标准。
install(安装):     把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
deploy(部署):     在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
mvn clean (清除) : 清除上次编译的结果

**测试**
[[email protected] hello-world]# mvn test
#打包
[[email protected] hello-world]# mvn package    #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下
#打包结果
[[email protected] hello-world]# ll target/
total 8
drwxr-xr-x 3 root root 17 2019-11-20 22:13 classes
-rw-r--r-- 1 root root 3130 2019-11-20 23:39 hello-world-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 28 2019-11-20 23:38 maven-archiver
drwxr-xr-x 3 root root 35 2019-11-20 22:13 maven-status
-rw-r--r-- 1 root root 2872 2019-11-20 23:38 original-hello-world-1.0-SNAPSHOT.jar
drwxr-xr-x 2 root root 125 2019-11-20 22:14 surefire-reports
drwxr-xr-x 3 root root 17 2019-11-20 22:13 test-classes

03. 部署Tomcat及数据库

#上传压缩包
[[email protected] ~]# ll
-rw-r--r-- 1 root root 9128610 Mar 27 2019 apache-tomcat-8.0.27.tar.gz
-rw-r--r-- 1 root root 170023183 Aug 14 2018 jdk-8u181-linux-x64.rpm

#安装JDK
[[email protected] ~]# rpm -ivh jdk-8u181-linux-x64.rpm
warning: jdk-8u181-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
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...
#解压Tomcat
[[email protected] ~]# mkdir /application
[[email protected] ~]# tar xf apache-tomcat-8.0.27.tar.gz -C /application
#创建软连接
[[email protected] ~]# ln -s /application/apache-tomcat-8.0.27 /application/tomcat
#tomcat启动加速的方法
[[email protected] ~]# vim /usr/java/jdk1.8.0_181-amd64/jre/lib/security/java.security
117 securerandom.source=file:/dev/urandom #修改之后
#启动tomcat
[[email protected] ~]# /application/tomcat/bin/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jarTomcat started.
#检查端口
[[email protected] ~]# 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:22 0.0.0.0:* LISTEN 6758/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7134/master
tcp6 0 0 :::8009 :::* LISTEN 24383/java
tcp6 0 0 :::8080 :::* LISTEN 24383/java
tcp6 0 0 :::22 :::* LISTEN 6758/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7134/master
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 24383/java

浏览器使用8080端口访问

#为项目准备好数据库jeesns,设置数据库root用户密码为root

#安装数据库
[[email protected] ~]# yum install mariadb-server -y
[[email protected] ~]# systemctl start mariadb.service
[[email protected] ~]# mysqladmin password 'root'
#创建jeesns库
[[email protected] ~]# mysql -uroot -proot -e "create database jeesns;"
#dev上面上传一个项目
[[email protected] ~]# ll
-rw-r--r-- 1 root root 15376795 2019-03-27 17:33 jeesns.tar.gz
[[email protected] ~]# tar xf jeesns.tar.gz
[[email protected] ~]# cd jeesns/
[[email protected] ~/jeesns]# git remote
origin
[[email protected] ~/jeesns]# git remote remove origin
[[email protected] ~/jeesns]# ll jeesns-web/database/
total 40
-rwxr-xr-x 1 root root 28667 2018-11-19 15:01 jeesns.sql
-rw-r--r-- 1 root root 3491 2018-11-19 15:01 update_1.2.0to1.2.1.sql
-rw-r--r-- 1 root root 1026 2018-11-19 15:01 update_1.2.1to1.3.sql
-rw-r--r-- 1 root root 1344 2018-11-19 15:01 update_1.3to1.3.1.sql

#将该数据库传输到tomcat节点进行导入
[[email protected] ~/jeesns]# scp jeesns-web/database/jeesns.sql [email protected]:~

#导入数据库
[[email protected] ~]# mysql -uroot -proot jeesns < jeesns.sql
[[email protected] ~]# mysql -uroot -proot -e "use jeesns; show tables"
+---------------------------+
| Tables_in_jeesns |
+---------------------------+
| tbl_action |
| tbl_action_log |
| tbl_ads |
|tbl_picture_favor |
| tbl_picture_tag |
| tbl_score_detail |
|tbl_weibo_comment |
| tbl_weibo_favor |
| tbl_weibo_topic |
+---------------------------+

#打包jeesns项目
[[email protected] ~/jeesns]# mvn package

#打包之后生成的war包
[[email protected] ~/jeesns]# ll jeesns-web/target/
total 25496
drwxr-xr-x 4 root root 181 2019-11-20 23:19 classes
drwxr-xr-x 3 root root 25 2019-11-20 23:19 generated-sources
drwxr-xr-x 5 root root 104 2019-11-20 23:19 jeesns-web
-rw-r--r-- 1 root root 26106028 2019-11-20 23:20 jeesns-web.war
drwxr-xr-x 2 root root 28 2019-11-20 23:19 maven-archiver
drwxr-xr-x 3 root root 35 2019-11-20 23:19 maven-status

#将其手动传输到tomcat节点上面测试
[[email protected] ~/jeesns]# scp jeesns-web/target/jeesns-web.war [email protected]:/application/tomcat/webapps/ROOT.war

浏览器刷新测试

04. 创建一个jeesns项目

#清除上次编译的结果
[[email protected] ~/jeesns]# mvn clean
[[email protected] ~/jeesns]# git remote remove origin
[[email protected] ~/jeesns]# git remote add origin [email protected]:OPS/jeesns.git
[[email protected] ~/jeesns]# git add .
[[email protected] ~/jeesns]# git commit -m "Initial commit"
# On branch master
nothing to commit, working directory clean
[[email protected] ~/jeesns]# git push -u origin master
Counting objects: 1946, done.
Compressing objects: 100% (1862/1862), done.
Writing objects: 100% (1946/1946), 7.09 MiB | 7.25 MiB/s, done.
Total 1946 (delta 285), reused 0 (delta 0)
remote: Resolving deltas: 100% (285/285), done.
To [email protected]:OPS/jeesns.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin. 

05. Jenkins创建一个maven

#此处如果出现报错,请添加Deploy Keys

#发现已经打包成功了

[[email protected] ~]# ll /var/lib/jenkins/workspace/maven-job/jeesns-web/target/jeesns-web.war
-rw-r--r-- 1 root root 26106007 2019-11-23 11:49 /var/lib/jenkins/workspace/maven-job/jeesns-web/target/jeesns-web.war

**jenkins用户给tomcat节点进行分发公钥**
[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
**构建后操作**
ssh [email protected] "mv /application/tomcat/webapps/ROOT.war /tmp/$BUILD_ID-ROOT.war"

scp /var/lib/jenkins/workspace/maven-job/jeesns-web/target/jeesns-web.war [email protected]:/application/tomcat/webapps/ROOT.war

[[email protected] ~]# ll /tmp/total 50992-rw-r--r-- 1 root root 26106004 2019-11-23 01:28 2-ROOT.war

3. Pipeline项目

01. 基础概念

CI/CD持续集成/持续部署

? 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员
每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动
化测试)来验证,从而尽早地发现集成错误。

? 比如(你家装修厨房,其中一项是铺地砖,边角地砖要切割大小。如果一次全切割完再铺上去,发现尺寸有误的话
浪费和返工时间就大了,不如切一块铺一块。这就是持续集成。)

? 持续部署(continuous deployment)是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化
相对也提高了人的效率。

? 比如(装修厨房有很多部分,每个部分都有检测手段,如地砖铺完了要测试漏水与否,线路铺完了要通电测试电路
通顺,水管装好了也要测试冷水热水。如果全部装完了再测,出现问题可能会互相影响,比如电路不行可能要把地
砖给挖开……。那么每完成一部分就测试,这是持续部署。)

? 持续交付 Continuous Delivery:频繁地将软件的新版本,交付给质量团队或者用户,以供评审尽早发现生产环境中存在的问题;如果评审通过,代码就进入生产阶段. 比如(全部装修完了,你去验收,发现地砖颜色不合意,水池太小,灶台位置不对,返工吗?所以不如没完成一部
分,你就去用一下试用验收,这就是持续交付。)

敏捷思想中提出的这三个观点,还强调一件事:通过技术手段自动化这三个工作。加快交付速度。

1.什么是pipeline
Jenkins 2.0的精髓是Pipeline as Code,是帮助Jenkins实现CI到CD转变的重要角色。什么是Pipeline,简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个
任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

2.Pipeline 概念
Pipeline 是一个用户定义的 CD 流水线模式。Pipeline 代码定义了通常包含构建、测试和发布步骤的完整的构
建过程。

Node node 是一个机器,它是 Jenkins 环境的一部分,并且能够执行 Pipeline。同时,node 代码块也是脚本式
Pipeline 语法的关键特性。

Stage Stage 块定义了在整个 Pipeline 中执行的概念上不同的任务子集(例如"构建","测试"和"部署"阶段),
许多插件使用它来可视化或呈现 Jenkins 管道状态/进度。

Step 一项任务。从根本上讲,一个步骤告诉 Jenkins 在特定时间点(或过程中的"步骤")要做什么。例如,使用
sh step:sh ‘make‘ 可以执行 make 这个 shell 命令。

3.jenkins file声明式
脚本式

脚本式语法格式:
pipeline{
    agent any
stages{
    stage("get code"){
        steps{
            echo "get code from scm"
            }
        }
    stage("package"){
        steps{
        echo "packge code"
        }
    }
    stage("deploy"){
        steps{
            echo "deploy packge to node1"
            }
        }
            }
}

#回滚脚本
vim huigun.sh
#!/bin/bash
cd /usr/share/nginx/    (进到nginx目录)
ls -d web-*             (查看web版本)
read -p "复制你需要回滚的目录版本" ver   (传参)
rm -fr html               (删除软连接)
ln -s $ver html           (重新软连接)

02. 创建pipeline项目


在仓库创建一个Jenkinsfile文件进行调用

编辑Jenkinsfile文件

pipeline{
    agent any
stages{
    stage("get code"){
        steps{
            echo "get code"
         }
     }
     stage("unit test"){
        steps{
        echo "unit test"
        }
    }
    stage("package"){
        steps{
    sh 'tar zcf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=./.git --exclude=Jenkinsfile'
        }
    }
    stage("deploy"){
        steps{
            sh 'ssh 10.0.0.80 "mkdir /opt/web-${BUILD_ID}"'
            sh 'scp /opt/web-${BUILD_ID}.tar.gz 10.0.0.80:/opt'
            sh 'ssh 10.0.0.80 "tar xf /opt/web-${BUILD_ID}.tar.gz -C /code"'
            }
        }
    }
}

执行构建报错

修改脚本再次构建

原文地址:https://www.cnblogs.com/gongjingyun123--/p/11993211.html

时间: 2024-08-26 06:03:36

Git--09 创建Maven项目的相关文章

java web开发入门九(Maven使用&amp;idea创建maven项目)基于intellig idea

Maven 1.解决的问题 jar包的依赖和管理:版本.依赖关系等 自动构建项目 2.maven介绍 1.Maven是什么? Apache Maven是一个软件项目管理的综合工具.基于项目对象模型(POM)的概念,提供了帮助管理构建.文档.报告.依赖.发布等方法,Maven简化和标准化项目建设过程.处理编译,分配,文档,团队协作和其他任务的无缝连接. Maven增加可重用性并负责建立相关的任务. 2.Maven好处 可以将项目过程规范化.自动化.高效化以及强大的可扩展性,利用maven自身及其插

eclipse 创建maven 项目 动态web工程(出现问题)

Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) 1. 此处是在你安装好了maven插件的前提下进行的并且配置好了你的maven环境指定好了你的maven的本地仓库.下面就开始maven web项目的搭建 首先:点击新建一个项目maven 2.点击next 3.选择web选项 4.创建你的项目的坐标点击finish完成 5.项目创建完成但是有错误

myeclipse 10创建maven项目

创建maven项目,这里使用的不是myeclipse自带的maven插件,而是自己 重新安装的插件,就不啰嗦了,直接上图吧 1.先是安装maven插件,将maven插件解压把它放进E:\xuan\MyEclipse\MyEclipse 10\dropins路径下 2.插件安装完成,开始创建maven项目(这里有两个maven插件,我选自己刚才安装的那个Maven插件去创建maven项目) 3.下一步 4.下一步选择目录,输入webapp,找到webapp 5.下一步填写自己的项目的信息,项目名称

使用idea搭建一个简单的SSM框架:(1)使用idea创建maven项目

首先使用的开发环境为idea2016.3.5+maven,使用的spring版本为4.1.7. 在使用idea创建maven项目时要注意两个事项 1.如下图所示 要选择simple java application的选项 2.在创建时要添加archetypeCatalog=internal选项,要不然很可能创建失败,或者一直卡在创建那里 接下来点击next选择项目放置的位置点击finish就能顺利创建maven项目了.当然在创建完成后可能会发现还是有很多缺少的文件夹,如下 在main中只有res

eclipse下创建maven项目并部署到tomcat服务器(转)

maven项目部署到服务器有很多方法,可以利用jetty-maven-plugin或者tomcat-maven-plugin,这属于maven的知识点. 通常开发中,需要将项目放在服务器上借助开发工具进行调试,这里就写一下在eclipse中创建maven项目,并将它改造使之能够部署到集成在eclipse中的tomcat上面. 1.点击File-->New-->Project,选择Maven Project,点击Next 2  选择项目所在的java working set ,点击Next 3.

命令行创建Maven项目卡住以及出错解决办法。

第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问题,等了好一会儿发现还是没动静.突然想起来视频里说从默认的中央仓库中下载失败率会很高.于是乎采用了视频里提到的英国的一个仓库.果然速度上来了,但还是有点慢,而且遇到了第二个问题. 第二问题是,在从仓库下载构件的最后出现了如下错误: [ERROR] Failed to execute goal org

解决IntelliJ IDEA 创建Maven项目速度慢问题

IntelliJ IDEA 15创建maven项目速度很慢,甚至卡住不动了. 方法一 在创建Maven项目时加上 archetypeCatalog=internal 参数,如下:  方法二 在maven的VM Options加上-DarchetypeCatalog=internal参数,如下: 

【MAVEN】如何在Eclipse中创建MAVEN项目

目录结构: contents structure [-] 1,Maven简介 2,Maven安装 2.1,下载Maven 2.2,配置环境变量 2.3,测试 3,Maven仓库 3.1,Maven仓库的工作原理 3.2,修改Maven仓库 4,Eclipse和Maven整合的配置 5,Eclispe中创建Maven项目 5.1,在Eclispe中使用Maven搭建Spring MVC 6,Eclipse中使用MAVEN管理的Web分布式开发 6.1,创建父模块 6.2,创建子模块 1,MAVEN

两种方式创建Maven项目【方式二】

1.不勾选Create a simple project,直接点击下一步 2.选择maven-archetype-webapp下一步 3.填写相关信息,点击下一步完成 4.此时会报一个jsp的错误.我们需要引入Java EE的jar包即可.在pom.xml中引入: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0