Jenkins构建ant项目
Jenkin創建任務
? 在瀏覽器中輸入:http://localhost:8080/,進入jenkins管理頁面
? 選擇左邊菜單的“新建”
? 選擇構建一個自由風格的軟件項目,輸入item名稱:empi-core(醫院平臺中的某個模塊),點OK
Jenkin任務SVN配置
? 在源碼管理中選擇“Subversion”
? 在Repository Url中輸入svn的url地址后出現紅色提示信息,點擊enter credential
? 如果沒有出現紅色提示信息,說明SVN的這個url已經驗證過用戶名和密碼了,就不需要再次驗證了
Jenkin任務SVN配置
? 選擇 “username/password authentication”
? 輸入SVN的用戶名和密碼,點ok
Jenkin任務構建觸發器
? build after other project are build:在其他項目構建完成后才執行構建:指定的項目完成構建后,觸
發此項目的構建。
? Poll SCM :這是CI 系統中常見的選項。當您選擇此選項,您可以指定一個定時作業表達式來定義
Jenkins每隔多久檢查一下您源代碼倉庫的變化。如果發現變化,就執行一次構建。
? Build periodically :此選項僅僅通知Jenkins按指定的頻率對項目進行構建,而不管SCM是否有變化。
? 我們選擇Poll SCM,并且在日程表中輸入“* * * * *",表示每隔一分鐘就去SVN檢查一次看是否有代碼更
新,一旦發現代碼更新就重新構建一次
Jenkin任務-添加構建步驟
? 在添加構建后步驟中選擇“Invoke Ant”
? 在“Invoke Ant”中 選擇當前安裝的ant,注意不能選擇default
? 在Targets中輸入,構建步驟 clean init build(多個命令之間用空格隔開)
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
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的一些標
準的基礎的包)
Jenkin任務-Eclipse中導出build.xml
一部分是Tomcat中的包,需要通過在eclipse中導入tomcat來導入
打開eclipse->windows->preference->server->runningtime
Jenkin任務-Eclipse中導出build.xml
? 選擇右上角的“add”按鈕,選擇你所安裝的tomcat,例如”Apache Tomcat v6.0“
Jenkin任務-Eclipse中導出build.xml
? 輸入Tomcat 的安裝目錄所在地址,點擊finish
Jenkin任務-Eclipse中導出build.xml
? 經過這些操作之后,依賴的包基本上都有了,如果還提示缺少包,咨詢開發人員,
? 一定要等依賴的包都找到之后才能導出生成build.xml,否則在jenkins里面的跑的時候肯定也會報錯,這時還需要返回eclipe去找包,再重新導出build.xml
? 在eclipse中選中項目節點,在右鍵菜單中選”導出“,在導出界面中選擇”Ant Buildfiles",點finish,這樣就可以看到在eclipse的workspace中對應于這個項目的根節點下面出現了build.xml這個文件
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中
Jenkin任務郵件通知設置
? 在添加構建后步驟中選擇“E-mail Notification”
? 在recipients中輸入接受人的郵件地址:linxiaojie@wondersgroup.com,如果多個郵件地址用空格來隔開
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將自動安裝
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
Jenkin任務-部署 tomcat配置
? 上一環節要輸入tomcat的用戶名和密碼,還需要對tomcat進行配置
? 進入tomcat的安裝目錄,修改D:/apache-tomcat-7.0.67/conf/tomcat-users.xml
? 修改如下:
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
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“ 旁邊的黑色小箭頭,然后在彈出的菜單中選擇”立即構建“
? 注意:新創建的任務在保存之后會自動觸發構建
Jenkin任務-立即構建
? 立即構建之后,這個任務會自動觸發SVN,從SVN上面下載最新的代碼
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, 再對其進行優化,比如加入 打包環節
總結
以上是生活随笔為你收集整理的Jenkins构建ant项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML 自定义实现emoji
- 下一篇: 第二十四章 面向对象------属性