Gitlab+Jenkins學習之路(八)之發佈maven項目及按版本發佈

  • 1、什麼是Maven

maven是一個項目管理和綜合工具。Maven提供給開發人員構建一個完整的生命週期框架。java

開發團隊能夠自動完成該項目的基礎設施建設,Maven使用標準的目錄結構和默認構建生命週期node

maven是屬於Apache的開源項目linux

maven主要服務於java平臺的構建、依賴管理、項目管理。git

  • 2、手動安裝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"
  • 3、POM文件解析

POM是研發給出的web

Project Object Model,項目對象模型shell

經過xml格式保存的pom.xml文件apache

做用相似ant的build.xml文件,功能更強大vim

該文件用於管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目受權、項目的url、項目的依賴關係等等。框架

  • 4、配置系統MAVEN

系統管理-->Global Tool Configurationssh

新增maven

取消自動安裝

填寫maven實際安裝路徑/data/apache-maven-3.5.2

  • 4、新建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
  • 5、將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項目就完成了!

  •  6、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中查看,便可按照不一樣的版本進行構建,如圖:

 

相關文章
相關標籤/搜索