1. 程式人生 > >Git+Jenkins學習之路(八)之發布maven項目及按版本發布

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

maven 創建 tar.gz pri .cn class a settings sed family

  • 一、什麽是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中查看,即可按照不同的版本進行構建,如圖:

技術分享圖片

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