需求:html
使用Jenkins的「參數化構建過程」,由用戶手動輸入參數。經過ant腳本接收這個參數,並輸出(固然,中間也能夠進行復雜的處理,這裏爲了說明問題,僅作簡單的輸出)。java
Jenkins1.509.4(如今Jenkins已經升級到2.x,版本差別不是很大)apache
apache-ant-1.9.6tomcat
apache-tomcat-7.0.6(注:Jenkins放在tomcat中,可參考我寫的 《Jenkins默認工做空間及更改默認工做空間》 一文)ide
前提是已經有jdk的支持並配置好了相關的環境變量~ui
工做一:在Jenkins中配置job的時候選中「參數化構建過程」,選擇String Parameter。spa
工做二:寫一個含main方法的類,打印這個參數。命令行
工做三(重要的工做):鏈接輸入和輸出。具體能夠經過ant腳原本實現。ant腳本又能夠在用命令行執行的時候傳遞參數。code
如今整理一下思路:Jenkins「參數化構建過程」輸入參數 → Jenkins執行ant腳本並將參數傳遞給ant腳本 → ant腳本對含有main方法的類進行編譯、打包、執行等操做。xml
說明:
實際過程多是:工做二 → 工做一 → 工做三。
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 }
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>
整個Java工程目錄層次以下:
注:上面已經說起,須要將整個項目(包含build.xml)拷貝到Jenkins的工做空間目錄下(個人是E:\jenkins\src-usercreate\)。
3.4 構建結果
在Jenkins中對該做業點擊『當即構建』,要求輸入CODE_VERSION的值,這裏了輸入v2.0。執行結果以下:
①Jenkins 「參數化構建過程」 供用戶輸入參數。
②ant腳本能夠做爲中間媒介將上述參數傳遞給Java代碼 [ 注意理解這個參數的傳遞過程 ]。