zoukankan      html  css  js  c++  java
  • Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布

    • 一、什么是Maven

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

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

    maven是属于Apache的开源项目

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

    • 二、手动安装MAVEN

    1)下载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
    2)解压
    [root@linux-node2 ~]# tar -zxvf apache-maven-3.5.2-bin.tar.gz #解压即可使用
    [root@linux-node2 ~]# mv apache-maven-3.5.2 /data/3)配置环境变量
    [root@linux-node2 bin]# export PATH=$PATH:/data/apache-maven-3.5.2/bin
    [root@linux-node2 bin]# vim /etc/profile
    export PATH=$PATH:/data/apache-maven-3.5.2/bin
    
    (4)测试
    [root@linux-node2 ~]# mvn -v
    
    Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
    Maven home: /data/apache-maven-3.5.2
    Java version: 1.8.0_151, vendor: Oracle Corporation
    Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre
    Default locale: en_US, platform encoding: UTF-8
    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项目

    1)新建maven项目
    (2)指定源码文职(git或svn)
    (3)指定build选项
    clean install
    clean install -Dmaven.test.skip=true4)指定execute shell
    java -jar target/testweb-0.0.1-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.1-SNAPSHOT.jar 
    Hello World! i am guo2
    • 五、将java的代码发布到linux-node1上

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

    rsync -raz --delete --progress target/testweb-0.0.1-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 8
    drwxr-xr-x 10 root root 4096 Dec  9 17:08 gitlab
    -rw-r--r--  1 root root 2663 Dec 22 14:16 testweb-0.0.1-SNAPSHOT.jar
    
    [root@linux-node1 ~]# java -jar /opt/testweb-0.0.1-SNAPSHOT.jar 
    Hello World! i am guo2

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

    •  六、maven项目按版本发布

    1)安装git parameter plugin插件
    
    (2)任务配置中勾选<参数化构建>3)选择git parameter
    
    (4)创建变量名 release(自定义)
    
    (5)选择发布类型:
    tag:按标签发布
    branch:按分支发布
    Revison:按修订发布

    (1)安装git parameter plugin插件

     

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

    [root@linux-node2 testing]# vim pom.xml 
    
    <version>v1.0</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.0
     1 file changed, 1 insertion(+), 1 deletion(-)
    [root@linux-node2 testing]# git push origin master
    Counting objects: 5, done.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
    Total 3 (delta 2), reused 0 (delta 0)
    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 6402300] featrue1
     1 file changed, 1 insertion(+), 1 deletion(-)
    [root@linux-node2 testing]# git push origin master
    Counting objects: 17, done.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (9/9), 565 bytes | 0 bytes/s, done.
    Total 9 (delta 2), reused 0 (delta 0)
    To git@192.168.56.11:java/Java.git
       eed5815..6402300  master -> master

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

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

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

    (3)选择git parameter

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

     

    修改源码管理

     

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

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

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

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

     

  • 相关阅读:
    Python 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
    crontab 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
    Python 好用第三方库 isort
    Python 接入钉钉机器人
    Effective Python(2) 遵循 PEP 8 风格指南
    fastapi(65) 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
    Mysql 如何决定用 datetime、timestamp、int 哪种类型存储时间戳?
    Effective Python(1) 查询自己使用的Python版本
    fastapi(66) 修改 uvicorn 的日志格式
    重要通知!重要通知!不是广告!不是广告!
  • 原文地址:https://www.cnblogs.com/linuxk/p/9453884.html
Copyright © 2011-2022 走看看