天天看點

Jenkins建構ant項目

Jenkin建立任務

• 在浏覽器中輸入:http://localhost:8080/,進入jenkins管理頁面

• 選擇左邊菜單的“建立”

• 選擇建構一個自由風格的軟體項目,輸入item名稱:empi-core(醫院平台中的某個子產品),點OK

Jenkins建構ant項目

Jenkin任務SVN配置

• 在源碼管理中選擇“Subversion”

• 在Repository Url中輸入svn的url位址後出現紅色提示資訊,點選enter credential

• 如果沒有出現紅色提示資訊,說明SVN的這個url已經驗證過使用者名和密碼了,就不需要再次驗證了

Jenkins建構ant項目

Jenkin任務SVN配置

• 選擇 “username/password authentication”

• 輸入SVN的使用者名和密碼,點ok

Jenkins建構ant項目

Jenkin任務建構觸發器

• build after other project are build:在其他項目建構完成後才執行建構:指定的項目完成建構後,觸

發此項目的建構。

• Poll SCM :這是CI 系統中常見的選項。當您選擇此選項,您可以指定一個定時作業表達式來定義

Jenkins每隔多久檢查一下您源代碼倉庫的變化。如果發現變化,就執行一次建構。

• Build periodically :此選項僅僅通知Jenkins按指定的頻率對項目進行建構,而不管SCM是否有變化。

• 我們選擇Poll SCM,并且在日程表中輸入“* * * * *",表示每隔一分鐘就去SVN檢查一次看是否有代碼更

新,一旦發現代碼更新就重新建構一次

Jenkins建構ant項目

Jenkin任務-添加建構步驟

• 在添加建構後步驟中選擇“Invoke Ant”

• 在“Invoke Ant”中 選擇目前安裝的ant,注意不能選擇default

• 在Targets中輸入,建構步驟 clean init build(多個指令之間用空格隔開)

Jenkins建構ant項目

Jenkin任務-build.xml

• Ant 的建構的每個Target不是随便寫的,而是來自build.xml這個檔案中定義的target的

name

• build.xml 這個檔案應該放在jenkin的workspace檔案夾下的每個任務的根目錄下,例如

• C:\Program Files (x86)\Jenkins\workspace\empi\build.xml

• build.xml這個檔案可以通過自己手工編寫,也可以在eclipse裡面自動轉換生成(前提是

eclipse的環境沒有問題,各種依賴的jar包都導進來了)

• 手工編寫: 要了解其中的幾個比較關鍵的标簽

• 1.标簽

• 每個建構檔案對應一個項目。标簽時建構檔案的根标簽。它可以有多個内在屬

• (1) default表示預設的運作目标,這個屬性是必須的。

• (2) basedir表示項目的基準目錄。

• (3) name表示項目名。

• (4) description表示項目的描述。

• 每個建構檔案都對應于一個項目,但是大型項目經常包含大量的子項目,每一個子項目都可

以有自己的建構檔案。

Jenkin任務-build.xml

• 2.标簽

• 一個target标簽可以依賴其他的target标簽。例如,有一個target用于編譯程式,另一個

target用于打包。打包之前必須先編譯該檔案,是以打包的target依賴于編譯程式的 target。

Target的所有屬性如下。

• (1).name表示标明,這個屬性是必須的。

• (2).depends表示依賴的目标。

• (3)if表示僅當屬性設定時才執行。

• (4)unless表示當屬性沒有設定時才執行。

• (5)description表示項目的描述。

• Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序

依次執行每個target。在執行之前,首先需要執行它所依賴的target。程式中的名為run的

target的depends屬性compile,而名為compile的target的 depends屬性是prepare,所

以這幾個target執行的順序是prepare->compile->run。一個target隻能被執行一次,即

使有多個target依賴于它。如果沒有if或unless屬性,target總會被執行。

• 其他更為詳細的請見

http://www.cnblogs.com/xionghui/archive/2012/03/13/2393679.html

Jenkin任務-舉例 :helloworld的build.xml

• <?xml version="1.0" encoding="UTF-8" ?>

Jenkin任務-Eclipse中導出build.xml

• 将項目導進eclipse:打開eclipse,選擇“file->import->Existing Project into Workspace",選擇項目

的代碼目錄所在,要選擇src的上一個層目錄,點“finsish”完成, 這樣需要建構的代碼就被導進了eclipse

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

• 對于非maven的項目,項目所依賴的包就不會集中的放在倉庫中,而是分别放在幾個地方,你可以從

eclipse的左側看出

一部分在WebRoot/WEB_INF/lib或者WebContent/WEB_INF/lib下面(這裡面的包是從SVN上下載下傳時

一起下載下傳下來的),

一部分在JRE SYSTEM LIBRARY,Java EE 6 Libraries, Web App Libraries(這裡面都是JDK的一些标

準的基礎的包)

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

一部分是Tomcat中的包,需要通過在eclipse中導入tomcat來導入

打開eclipse->windows->preference->server->runningtime

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

• 選擇右上角的“add”按鈕,選擇你所安裝的tomcat,例如”Apache Tomcat v6.0“

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

• 輸入Tomcat 的安裝目錄所在位址,點選finish

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

• 經過這些操作之後,依賴的包基本上都有了,如果還提示缺少包,咨詢開發人員,

• 一定要等依賴的包都找到之後才能導出生成build.xml,否則在jenkins裡面的跑的時候肯定也會報錯,這時還需要傳回eclipe去找包,再重新導出build.xml

• 在eclipse中選中項目節點,在右鍵菜單中選”導出“,在導出界面中選擇”Ant Buildfiles",點finish,這樣就可以看到在eclipse的workspace中對應于這個項目的根節點下面出現了build.xml這個檔案

Jenkins建構ant項目

Jenkin任務-Eclipse中導出build.xml

• 通過Eclipse導出的build.xml 比較長,因為裡面有很多關于jar包所在路徑的資訊,而我們不需要全部看

懂,隻找出關鍵的幾個Target,包括:clean, init, build,compile等等

• 因為 Target的name是可以自由定義的,是以關鍵是看到一些Target下面的子節點是什麼

• 例如: init 中一般做的事情是 …,(建立用于儲存編譯後生成的.class目錄)

• clean中一般做的事情是…( 删除上一次編譯生成的存放class檔案的目錄或

檔案)

• build中一般做的事情是…,(編譯java源檔案,生成目标的.class檔案)

• package中一般做的事情是…, …(将生成的.class檔案打包成.jar或

者.war 包,以待部署)

• 關鍵在于:分析清每個Target在做什麼,按照 清理 ->初始化->編譯->打包 這個順序,将對應得Target

填進 jenkins中

Jenkins建構ant項目

Jenkin任務郵件通知設定

• 在添加建構後步驟中選擇“E-mail Notification”

• 在recipients中輸入接受人的郵件位址:[email protected],如果多個郵件位址用空格來隔開

Jenkin任務-打包

• 首先要修改build.xml檔案,添加用于打包的target

• 打包的target寫法如下,在build.xml中添加

其中destfile=“package/EMPI-Core.war是打包生成的包的名字和所存放的相對路徑,

basedir=”WebRoot“ 是被打包的相對路徑

• 在此“立即建構”EMPI-Core項目,建構完成之後你可以在jenkins的安裝目錄下的

C:\Program Files (x86)\Jenkins\workspace\empi-core\package,看到 EMPI-Core.war這個包,

說明打包成功

Jenkin任務-部署(方案1 利用jenkins插件)

• 首先要安裝插件”deploy-to-container-plugin“,在jenkins首頁選擇”管理插件“

• 在:管理插件中選擇”可安裝插件“,搜尋”deploy-to-container-plugin“,然後直接點選”安裝“,

jenkins将自動安裝

Jenkins建構ant項目

Jenkin任務-部署

• 插件安裝完之後,在建構後操作中将會出現"Deploy war/ear to container",選擇該項

• WAR/EAR files:是war包的相對路徑(相對于workspace)

• content path:tomcat的釋出路徑,即使用localhost/(content path設定的名字)來通路項目.

• contaners :釋出到的容器,主要可釋出到tomcat、jboss、GlassFish,這裡選擇已經安裝好的Tomcat7.x,然後輸入Tomcat的使用者名和密碼,關鍵還有Tomcat的url

Jenkins建構ant項目

Jenkin任務-部署 tomcat配置

• 上一環節要輸入tomcat的使用者名和密碼,還需要對tomcat進行配置

• 進入tomcat的安裝目錄,修改D:/apache-tomcat-7.0.67/conf/tomcat-users.xml

• 修改如下:

Jenkins建構ant項目

Jenkin任務-部署(方案2 手工修改build.xml)

• 方案2:可以在build.xml中添加 deploy的 target

• Deploy的步驟:1,關閉tomcat(否則無法删除以前部署的包)

2 . 删除tomcat安裝目錄的webapp下面的舊的war包和解壓後的檔案夾

3 複制新的war包到tomcat安裝目錄的webapp下面

4 重新開機 tomcat

5 在浏覽器中輸入:http://localhost:8082/EMPI-Core 可以正常通路說明部署成功

• 傳回修改EMPI-Core的配置,添加 war和 deploy 這兩個target

Jenkins建構ant項目

Jenkin任務-部署 總結

• 方案1 (利用 jenkins 插件)

• 優點:不需要修改代碼,不但可以部署到本地的tomcat,還可以部署到遠端的tomcat,

• 缺點:在部署之後如果想加上selenium webdriver的python 測試腳本需要 另外建構一個任務專

門用于測試

• 方案 2 (手動修改build.xml)

• 優點:自由定義部署過程,部署完之後可以繼續加上selenium webdriver的python 測試腳本

• 缺點:不能部署到遠端伺服器

• 部署成功之後我們可以在本地輸入 http://localhost:8082/EMPI-Core 就可以看到患者管理的頁面

• 如果部署在遠端的tomcat伺服器,在本地可以輸入 http:// 遠端伺服器IP:8082/EMPI-Core 來通路

Jenkin任務-立即建構

• 點選”儲存“,這個jenkins任務就建立好了,傳回首頁

• 手工建構:選擇項目”hs-pd-bi“ 旁邊的黑色小箭頭,然後在彈出的菜單中選擇”立即建構“

• 注意:新建立的任務在儲存之後會自動觸發建構

Jenkins建構ant項目

Jenkin任務-立即建構

• 立即建構之後,這個任務會自動觸發SVN,從SVN上面下載下傳最新的代碼

Jenkins建構ant項目
Jenkins建構ant項目

Jenkin任務-總結

• Jenkin 建立maven項目相對ant來說更簡便些,以後開發的新的程式都會基于maven來做

• 對于maven項目,關鍵在于兩個xml檔案,setting.xml 和 pom.xml,

• setting.xml 配置好一次就可以了,pom.xml 對于每個小子產品都會有一個

• pom.xml中最關鍵的是配置好,不過這個檔案開發的都會大緻寫好,隻

要看的懂就可以了

• 對于非maven的項目,其實開發的也可以在eclipse将其轉換成maven的項目

• 對于非maven的項目使用ant來建構也是可以的,就是自己寫build.xml比較複雜和麻煩

• 是以推薦在eclipse中将環境配置好後導出 build.xml, 再對其進行優化,比如加入 打包環節

繼續閱讀