• 一、什么是Maven

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

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

maven是属于Apache的开源项目

maven主要服务于java平台的构建、依赖管理、项目管理。

  • 二、手动安装MAVEN

()下载maven
[root@linux-node2 ~]# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz ()解压
[root@linux-node2 ~]# tar -zxvf apache-maven-3.5.-bin.tar.gz #解压即可使用
[root@linux-node2 ~]# mv apache-maven-3.5. /data/ ()配置环境变量
[root@linux-node2 bin]# export PATH=$PATH:/data/apache-maven-3.5./bin
[root@linux-node2 bin]# vim /etc/profile
export PATH=$PATH:/data/apache-maven-3.5./bin ()测试
[root@linux-node2 ~]# mvn -v Apache Maven 3.5. (138edd61fd100ec658bfa2d307c43b76940a5d7d; --18T15::+:)
Maven home: /data/apache-maven-3.5.
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.-openjdk-1.8.0.151-.b12.el7_4.x86_64/jre
Default locale: en_US, platform encoding: UTF-
OS name: "linux", version: "3.10.0-693.5.2.el7.x86_64", arch: "amd64", family: "unix"
  • 三、POM文件解析

POM是研发给出的

Project Object Model,项目对象模型

通过xml格式保存的pom.xml文件

作用类似ant的build.xml文件,功能更强大

该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

  • 四、配置系统MAVEN

系统管理-->Global Tool Configuration

新增maven

取消自动安装

填写maven实际安装路径/data/apache-maven-3.5.2

  • 四、新建maven项目

()新建maven项目
()指定源码文职(git或svn)
()指定build选项
clean install
clean install -Dmaven.test.skip=true
()指定execute shell
java -jar target/testweb-0.0.-SNAPSHOT.jar

配置maven:

settings.xml是maven的主要配置文件
位置$home/.m2是maven下载的插件的存储位置

(1)新建maven项目
新建一个项目,选择构建一个maven项目。如果此处没有“构建一个maven项目”的选项,需要安装插件:Maven Integration Plugin

(2)指定源码位置(git或svn)

(3)指定build选项
clean install
clean install -Dmaven.test.skip=true

(4)指定execute shell
java -jar target/testweb-0.0.1-SNAPSHOT.jar

(5)立即构建
这里在构建的过程中,可能会出现插件下载失败,需要更改maven的插件源,编辑/data/apache-maven-3.5.2/conf/settings.xml

立即构建完成,可以在/var/lib/jenkins/workspace/Java/下可以看到拉取的代码,我们找到整个项目的的jar包并执行,可以看到hello world

[root@linux-node2 target]# java -jar testweb-0.0.-SNAPSHOT.jar
Hello World! i am guo2
  • 五、将java的代码发布到linux-node1上

 (1)修改项目的Execte shell设置,再重新构建

rsync -raz --delete --progress target/testweb-0.0.-SNAPSHOT.jar 192.168.56.11:/opt/
ssh root@192.168.56.11 "java -jar /opt/testweb-0.0.1-SNAPSHOT.jar"

[root@linux-node1 ~]# ll /opt/
total
drwxr-xr-x root root Dec : gitlab
-rw-r--r-- root root Dec : testweb-0.0.-SNAPSHOT.jar [root@linux-node1 ~]# java -jar /opt/testweb-0.0.-SNAPSHOT.jar
Hello World! i am guo2

到此一个maven项目就完成了!

  •  六、maven项目按版本发布

()安装git parameter plugin插件

()任务配置中勾选<参数化构建>

()选择git parameter

()创建变量名 release(自定义)

()选择发布类型:
tag:按标签发布
branch:按分支发布
Revison:按修订发布

(1)安装git parameter plugin插件

修改pom.xml中的版本改为v1.0

[root@linux-node2 testing]# vim pom.xml 

<version>v1.</version>

[root@linux-node2 testing]# git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: pom.xml
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@linux-node2 testing]# git add .
[root@linux-node2 testing]# git commit -m "v1.0"
[master eed5815] v1.
file changed, insertion(+), deletion(-)
[root@linux-node2 testing]# git push origin master
Counting objects: , done.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
To git@192.168.56.11:java/Java.git
37d2bd1..eed5815 master -> master

给Java项目中的版本修改后打上标签

此时我们再修改

[root@linux-node2 testing]# vim src/main/java/com/ghz/testweb/App.java
package com.ghz.testweb; /**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World! i am guo2 v1.0" );
}
}
[root@linux-node2 testing]# git add .
[root@linux-node2 testing]# git commit -m "featrue1"
[master ] featrue1
file changed, insertion(+), deletion(-)
[root@linux-node2 testing]# git push origin master
Counting objects: , done.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
To git@192.168.56.11:java/Java.git
eed5815.. master -> master

此时进行构建,由于版本修改了,会报错:

但是我们每次进行版本的修改后如果都去修改excute shell就显得太麻烦

(2)任务配置中勾选<参数化构建>

(3)选择git parameter

(4)创建变量名 release(自定义)

 

修改源码管理

(5)选择发布类型:
tag:按标签发布

(6)对代码进行多次修改,并提交

然后再代码库中对提交进行tag标记

再在jenkins中查看,即可按照不同的版本进行构建,如图:

Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布的更多相关文章

  1. Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布

    思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...

  2. Gitlab+Jenkins学习之路(十三)之发布Java项目到tomcat

    一.新建一台虚拟机安装tomcat ()安装JDK 官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...

  3. Gitlab+Jenkins学习之路(七)之发布PHP项目

    使用git+jenkins实现持续集成 Step1:构建一个自由风格的php-deploy Step2:Gernal配置,丢弃旧的构建,防止jenkins构建较多之后变臃肿 Step3:源码管理:这里 ...

  4. Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  5. Gitlab+Jenkins学习之路(十四)之自动化脚本部署实践

    目录 一.环境说明和准备 1.环境说明 2.服务器准备工作 二.发布脚本编写 1.自动化部署流程设计 2.自动化部署脚本编写 三.发布测试 1.开发机和github添加ssh信任 2.克隆项目到开发机 ...

  6. Gitlab+Jenkins学习之路(十)之Jenkins按角色授权和Pipeline

    一.Jenkins按角色授权 当一个公司的开发分为多个组别,或者是多个项目等等.用于公司内部测试,让开发人员自行构建测试,此时不可能让所有的开发都在公用一个构建,这样变得很混乱,为了解决这一问题,je ...

  7. Gitlab+Jenkins学习之路(一)之Git基础

    1.GIT基础    GIT是一个分布式版本管理系统,速度快,适合大规模,跨地区多人协同开.SVN是一个集中式版本管理系统. (1)GIT生态 GIT分布式版本管理系统 Gitlab git私库解决方 ...

  8. Gitlab+Jenkins学习之路(二)之gitlab部署

    1.安装依赖及gitlab [root@linux-node1 ~]# yum install -y curl policycoreutils openssh-server openssh-clien ...

  9. Gitlab+Jenkins学习之路(三)之gitlab权限管理--issue管理

    1.创建Group,User,Project 创建一个组,组名为java Group path http://192.168.56.11/java Visibility Level: #为权限级别,一 ...

随机推荐

  1. 用字典给Model赋值

    用字典给Model赋值 此篇教程讲述通过runtime扩展NSObject,可以直接用字典给Model赋值,这是相当有用的技术呢. 源码: NSObject+Properties.h 与 NSObje ...

  2. 屏蔽响应事件继续向父视图传递的category

    屏蔽响应事件继续向父视图传递的category 这篇教程是上一篇教程的升级版,将复杂的代码封装成了category,更便于使用:) 效果: 源码: UIGestureRecognizer+EnvetI ...

  3. linux下手动安装git教程

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.而国外的GitHub和国内的Coding都是项目的托管平台.但是在使用git工具的时候,第一步要学会如何安装gi ...

  4. Redis学习---CentOs/RedHat下Redis的安装

    redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境.      安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gc ...

  5. PHP防SQL注入和XSS攻击

    摘要: 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL ...

  6. AltiumDesigner17学习指南

    AltiumDesigner工程模板 工程文件管理 视图->桌面布局->默认 恢复界面 AltiumDesigner17功能 修改元件标号 双击元件标号,在Designetor的Value ...

  7. python3 装饰器全解

    本章结构: 1.理解装饰器的前提准备 2.装饰器:无参/带参的被装饰函数,无参/带参的装饰函数 3.装饰器的缺点 4.python3的内置装饰器 5.本文参考 理解装饰器的前提:1.所有东西都是对象( ...

  8. C#基础学习之事件的理解和应用

    事件的使用和委托类似,也是分四步来实现:声明委托.定义事件.注册事件.调用事件 我们先看一下事件的定义 //定义委托 public delegate void PublishEventHandler( ...

  9. 将项目发布到Maven中央仓库的不完整纪要

    背景 有几个Utils性质的Jar需要跨项目引用,原本想部署私有Maven仓库,后来感觉太麻烦,索性直接发布到中央库,引用时也方便. 发布成功之后,觉得某些细节还是有必要记录一下. 资源 Sonaty ...

  10. jquery的fadeTo方法的淡入淡出轮播图插件

    由于对基于jquery的简单插件开发有了一定的了解,慢慢的也对基于jquery的插件开发有了兴趣,在上班结束之后就研究各种插件的思路逻辑.最近开发了一款基于jquery的fadeTo方法的轮播图插件, ...