Jenkins結合ant傳遞參數

  需求html

  使用Jenkins的「參數化構建過程」,由用戶手動輸入參數。經過ant腳本接收這個參數,並輸出(固然,中間也能夠進行復雜的處理,這裏爲了說明問題,僅作簡單的輸出)。java

1.基礎環境

Jenkins1.509.4(如今Jenkins已經升級到2.x,版本差別不是很大)apache

apache-ant-1.9.6tomcat

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

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

2.思路分析

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

工做二:寫一個含main方法的類,打印這個參數。命令行

工做三(重要的工做):鏈接輸入和輸出。具體能夠經過ant腳原本實現。ant腳本又能夠在用命令行執行的時候傳遞參數。code

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

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代碼 [ 注意理解這個參數的傳遞過程 ]。

相關文章
相關標籤/搜索