【說明】使用maven+svn+hudson進行持續整合開發方法 一 : 使用maven管理項目 1 maven主要的設定檔settings的主要配置介紹
settings檔案的主要配置的解釋:
localRepository: 本地倉庫配置路徑
offline : 是否是離線的,這個一般不用配置,離線的話會無法下載中央倉庫的包
servers: 配置使用者名稱密碼,用來訪問nexus
mirrors:用來訪問其他庫
profiles :個人化配置,需要啟用 2:在pom.xml檔案配置上傳的路徑,例如如下[可以把上傳的路徑和下載路徑寫為同一個]
1) 配置pom檔案
<distributionManagement> <repository> <id>nexus-releases</id> <name>releases</name> <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url> </repository> </distributionManagement>
2) 執行命令 :mvndeploy
結果如下:
3:配置下載的路徑
1)主要設定檔:
<repositories> <repository> <id>central</id> <name>Central</name> <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories>
2) 添加一個依賴會自動下載
此圖為測試了加上一個本地沒有的依賴後會從 私人中央倉庫下載jar包,下載的路徑為pom.xml配置的中央倉庫路徑而非預設路徑
4把普通項目轉化為maven項目的方法:
1)首先eclipse已經安裝了maven的外掛程式,並且已經配置好了.
2)建立一個空的maven項目
3) 把項目中的java檔案放在maven對應的目錄下
4) 配置 pom.xml檔案,添加依賴,和上傳中央倉庫路徑,從中央倉庫下載jar包的路徑
配置pom.xml依賴
會顯示如下介面,尋找需要的jar即可
二: 使用maven整合nexus 管理中央倉庫 1下載nexus檔案
本執行個體用的版本時nexus-2.5.1-01-bundle.zip,下載地址可以在官網上下載 2啟動nexus 。先解壓nexus,然後cmd到解壓後的目錄下,啟動服務
[預設的中央倉庫的路徑就是在當前的目錄下]
[Central下載倉庫路徑]:
3 開啟首頁
http://127.0.0.1:8081/nexus/index.html#welcome
在右上方登入 admin/admin123會進入到首頁面
4中央倉庫結構
Repositories 是中央倉庫集合,下面分為幾個倉庫,有Releases(發布版)/Central(中央倉庫)/Snapshots(開發版)等多個倉庫 5 私人倉庫
使用者遠程使用自己建立私人的中央倉庫已在上一章的3說到了,想要使用私人倉庫需要進行一些配置,選中Central,開啟configuration,如下圖所示:
預設 DownloadRemote Indexes 為false,改為true,儲存即可。重新登入並堅持倉庫路徑,發現好多常用的jar包已經被下載
三: 整合hudson持續整合開發
實現了jar包上傳下載管理後,如果是個較大的項目,需要保證項目持續整合開發的話,還需要使用hudson,進行對項目的定時編譯 1 下載hudson ,本執行個體下載是最新的,可以很容易在官網上下載
hudson-3.0.1.war 2 啟動hudson,預設使用的是8080連接埠
因為hudson是個jar檔案,所以
Cmd到hudson目錄下
輸入命令
java -jar hudson-3.0.1.war
3 開啟首頁
http://localhost:8080/,如下圖所示:
4 進行系統配置:
只配置兩個地方jdk路徑和maven的路徑,如圖:
下面就可以進行建立新的工程了,在建立工程前,持續開發用到了svn,所以要先進行
SVN的配置 5 SVN配置
Svn主要需要下載三個資源(用戶端,伺服器端,Eclipse的SVN外掛程式)
測試執行個體用的路徑為 file:///d:/MySVNRepo,啟動好服務後,把代碼上傳到SVN上 6 建立Hudson工程
選擇構建一個自由式饒舌的軟體項目 7 填寫svn路徑
此處需要加上SVN資源路徑: file:///D:/MySVNRepo/mavenT
8 填寫執行循環和maven的執行命令點擊儲存
*/10**** 表示每隔10分鐘構建一次
9 點擊立即構建,查看構建結果,編譯成功
點擊console可以查看項目構建的流程
1) 先建立一個工作空間workspace
2) 更新svn的檔案,查看是否有更新變化,如果有就會下載下來
3) 執行命令mvn XXXX(命令)
4) 返回結果 SUCCESS/FAILURE
如果看的不清楚,請看下面詳細記錄
Started by user anonymousUpdating file:///D:/MySVNRepo/mavenCheck2 revision: 2013-7-17 13:52:26 depth:infinity ignoreExternals: falseU src\main\java\com\check2\CheckMaven2.javaAt revision 18[workspace] $ mvn.bat package[INFO] Scanning for projects...[WARNING] [WARNING] Some problems were encountered while building the effective model for propCheck2:mavenCheck2:jar:8.0.0[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: activeio:activeio:jar -> version 1.1 vs 2.0-r118 @ line 35, column 15[WARNING] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.[WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.[WARNING] [INFO] [INFO] ------------------------------------------------------------------------[INFO] Building mavenCheck2 8.0.0[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mavenCheck2 ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] Copying 0 resource[INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ mavenCheck2 ---[INFO] Nothing to compile - all classes are up to date[INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mavenCheck2 ---[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent![INFO] Copying 0 resource[INFO] [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ mavenCheck2 ---[INFO] Nothing to compile - all classes are up to date[INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mavenCheck2 ---[INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mavenCheck2 ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 6.767s[INFO] Finished at: Wed Jul 17 13:52:50 CST 2013[INFO] Final Memory: 7M/17M[INFO] ------------------------------------------------------------------------Finished: SUCCESS