Jenkins結合ant傳遞參數


  需求

  使用Jenkins的「參數化構建過程」,由用戶手動輸入參數。通過ant腳本接收這個參數,並輸出(當然,中間也可以進行復雜的處理,這里為了說明問題,僅做簡單的輸出)。

1.基礎環境

Jenkins1.509.4(現在Jenkins已經升級到2.x,版本差異不是很大)

apache-ant-1.9.6

apache-tomcat-7.0.6(注:Jenkins放在tomcat中,可參考我寫的 《Jenkins默認工作空間及更改默認工作空間》 一文)

前提是已經有jdk的支持並配置好了相關的環境變量~

2.思路分析

工作一:在Jenkins中配置job的時候選中「參數化構建過程」,選擇String Parameter。

工作二:寫一個含main方法的類,打印這個參數。

工作三(重要的工作):連接輸入和輸出。具體可以通過ant腳本來實現。ant腳本又可以在用命令行執行的時候傳遞參數。

現在整理一下思路:Jenkins「參數化構建過程」輸入參數 → Jenkins執行ant腳本並將參數傳遞給ant腳本 → ant腳本對含有main方法的類進行編譯、打包、執行等操作。

3.開始練兵

  說明

    實際過程可能是:工作二 → 工作一 → 工作三。

 

3.1  工作一

3.2  工作三

注:cd javaant是因為build.xml文件會放在這個目錄之下,見下圖:


 

這里還涉及一個很重要的知識點:如何在Jenkins中本地構建job?

  答案是直接將整個項目拷貝至Jenkins的工作空間之下。如上圖,我的Jenkins默認工作空間已經更改為E:\jenkins\,在此目錄下建立一個目錄src-usercreate,專門用於構建本地job。

3.3  工作二

直接上代碼了。

 1 package com.primeton.ant;
 2 
 3 public class HelloWorld {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         String version = args[0];
10         System.out.println("Hello,"+version+"!");
11     }
12 
13 }
Java代碼
 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 2 <project name="javaant" basedir="." default="main">
 3 
 4     <property name="src.dir"     value="src"/>
 5     <property name="build.dir"   value="build"/>
 6     <property name="classes.dir" value="${build.dir}/classes"/>
 7     <property name="jar.dir"     value="${build.dir}/jar"/>
 8     <property name="main-class"  value="com.primeton.ant.HelloWorld"/>
 9     <property name="CODE_VERSION"  value="v1.2.2"/>
10     <target name="clean">
11         <delete dir="${build.dir}"/>
12     </target>
13 
14     <target name="compile">
15         <mkdir dir="${classes.dir}"/>
16         <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
17     </target>
18 
19     <target name="jar" depends="compile">
20         <mkdir dir="${jar.dir}"/>
21         <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
22             <manifest>
23                 <attribute name="Main-Class" value="${main-class}"/>
24             </manifest>
25         </jar>
26     </target>
27 
28     <target name="run" depends="jar">
29         <java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
30             <arg value="${CODE_VERSION}"/> 
31         </java>
32     </target>
33 
34     <target name="clean-build" depends="clean,jar"/>
35 
36     <target name="main" depends="clean,run"/>
37 
38 </project>
ant腳本

整個Java工程目錄層次如下:

注:上面已經提及,需要將整個項目(包含build.xml)拷貝到Jenkins的工作空間目錄下(我的是E:\jenkins\src-usercreate\)。

3.4  構建結果

在Jenkins中對該作業點擊『立即構建』,要求輸入CODE_VERSION的值,這里了輸入v2.0。執行結果如下:

4.小結

①Jenkins 「參數化構建過程」 供用戶輸入參數。

②ant腳本可以作為中間媒介將上述參數傳遞給Java代碼 [ 注意理解這個參數的傳遞過程 ]。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM