<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
    Continuum入門--實(shí)例
        本文雖然是Continuum的入門,但并不涉及Continuum的歷史、下載與安裝,這些內(nèi)容可以到 Continuum的官方網(wǎng)站 (http://maven.apache.org/continuum/) 上了解。本文主要是以一個(gè)實(shí)例來闡述使用 Continuum的基本方法,而其中將使用的Maven工程是《Maven入門--概念與實(shí)例》中的實(shí)例(該文末有下載鏈接)。
    注:轉(zhuǎn)載時(shí)請注明原作者(jiangshachina)及出處(http://www.tkk7.com/jiangshachina)!

    1 使用持續(xù)集成的好處
    1.1 較早提交,經(jīng)常提交
        當(dāng)開發(fā)者有規(guī)律性地提交文件時(shí),持續(xù)集成將是最高效的。這就是意味著,不能提交不完全的代碼,而是保持每次的改動(dòng)不大,并且有很好的測試。這就可以更好地發(fā)現(xiàn)代碼中的錯(cuò)誤。
    1.2 盡可能頻繁的構(gòu)建
        頻繁的Build可能要受到需要進(jìn)行Build的工作量,以及進(jìn)行Build工作的機(jī)器的性能的影響。但頻繁的Build確實(shí)可以在開發(fā)人員轉(zhuǎn)移注意力之前,盡可能早的發(fā)現(xiàn)錯(cuò)誤。任何時(shí)候,任何一個(gè)提交的發(fā)生,Continuum都可以觸發(fā)一個(gè)Build工作。這就意味著,這些Build工作應(yīng)該更快,對于大量的Build工作或性能測試
    1.3 創(chuàng)建一個(gè)穩(wěn)定的環(huán)境
        如果該Build不是其它開發(fā),測試或產(chǎn)品環(huán)境中的一員,那么就可以避免定制JDK或其它的本地設(shè)置。如果在持續(xù)集成環(huán)境中,一個(gè)Build工作失敗了,它會被從引起它的原因的修改中隔離出來,可以獨(dú)立于運(yùn)行環(huán)境來被使用。
    1.4 運(yùn)行干凈的構(gòu)建
        快速、重復(fù)地構(gòu)建是十分有用的,同樣重要的是,不會由于舊的Build狀態(tài)而發(fā)生失敗的Build工作。有規(guī)律的考慮問題,就能得到干凈的構(gòu)建。Continuum默認(rèn)就是進(jìn)行干凈的Build工作,未來它還可以允許開發(fā)者根據(jù)所選的時(shí)間表去請求一個(gè)初始的checkout。
    2 實(shí)例
    2.1 構(gòu)想
        本實(shí)例中需要持續(xù)集成的Maven工程是《Maven入門--概念與實(shí)例》中的Demo。使用的SCM是Subversion,即假定已經(jīng)安裝好了Subversion服務(wù)器和命令行客戶端。我們的目標(biāo)是使用Continuum對Maven工程demo(包括它的子工程)進(jìn)行定時(shí)的持續(xù)集成。在本文的環(huán)境中有如下路徑:
        Continuum_Home=D:\continuum
        SVN_Repoitory=E:\svn-repo\repository
        Maven_Demo=D:\maven\demo
        Continuum_Maven=D:\maven\continuum
      // 該目錄存放從Subversion下載的Maven Demo工程
    2.2 初始化Subversion倉庫
        生成倉庫:svnadmin create SVN_Repository
        將Maven_Demo中的文件導(dǎo)入到倉庫:
            svn import Maven_Demo file:///SVN_Repoitory/demo -m "initial import demo"
        重新下載倉庫中的文件(在目錄Continuum_Maven中運(yùn)行如下命令):
            svn checkout file:///SVN_Repoitory/demo demo
    2.3 啟動(dòng)Continuum
        假設(shè)此時(shí)已經(jīng)安裝了Continuum,但還沒有運(yùn)行它。要運(yùn)行Continuum,可以雙擊Continuum_Home\bin\win32\run.bat文件。對于第一次運(yùn)行,會報(bào)一些錯(cuò)誤:
    ……
    WARN  RDBMS - Error initialising derby schema : Schema 'SA' does not exist
    ERROR 42Y07: Schema 'SA' does not exist
    ……
    這種情況是正常的,因?yàn)镃ontinuum后臺使用的是Apache Derby數(shù)據(jù)庫,在第一次運(yùn)行之前,Continuum所需要的一些表和數(shù)據(jù)并不存在。但Continuum會初始化這些數(shù)據(jù),當(dāng)?shù)?次啟動(dòng)Continuum時(shí),這些錯(cuò)誤就不會出現(xiàn)了。
        Continuum服務(wù)器默認(rèn)使用8080端口,如果之前該端口已被占用了,那么啟動(dòng)將失敗。為了解決這個(gè)問題,我們需要修改jar文件Continuum_Home\apps\continuum-plexus-application-1.0.3.jar中的\conf\application.xml文件。在該文件中查找8080(該值是唯一的),將改它為你所指定的端口值,本文是使用8081。經(jīng)過上述過程后,Continuum服務(wù)器應(yīng)該就可以正常啟動(dòng)了。下面將討論Continuum的初始化配置。
    2.4 初始化配置
        在瀏覽器中使用地址http://localhost:8081/continuum登錄Continuum控制臺界面,如下圖所示。
    Continuum01.gif
    第一次登錄Continuum后,需要進(jìn)行一些配置。主要包括用戶名/密碼,工作區(qū)目錄,Build輸出目錄以及公司信息。主要參數(shù)值如下所示:
        Working Directory=D:\continuum\workspace 
        Build Output Directory=D:\continuum\workspace\output
        Base URL=http://localhost:8081/continuum/servlet/continuum
        // 這里的Company信息就借用此Blog站點(diǎn)的信息吧 *_*
        Company Name=BlogJava
        Company Logo=http://www.tkk7.com/images/logo.gif
        Company URL=http://www.tkk7.com/
     
    提交之后會出現(xiàn)如下畫面(能夠看到BlogJava的logo嗎 *_*)
    Continuum02.gif
    使用初始配置時(shí)設(shè)置的用戶名及密碼,就可以登錄Continuum控制臺了。
    2.5 修改POM文件
        在目錄Continuum_Maven中執(zhí)行如下命令,將Maven工程demo重新下載一次
            svn checkout file:///SVN_Repository/demo demo
    為了能被Continuum使用,且能與Subversion進(jìn)行配合,需要對原來Maven工程中的POM文件進(jìn)行修改。在每個(gè)POM中加入如下形式的語句:
    <project>
      ……
      
    <ciManagement>
          
    <system>Continuum</system>
          
    <url>http://localhost:8081/continuum/servlet/continuum</url>
        
    <notifiers>
            
    <notifier>
              
    <type>mail</type>
            
    <address>jiangshachina@163.com</address>
          
    </notifier>
        
    </notifiers>
      
    </ciManagement>
       
      
    <scm>
        
    <connection>scm:svn:file://localhost/SVN_Repository/ProjectName</connection>
      
    </scm>
      ……
    </project>
    其中ProjectName要與POM當(dāng)前所在工程名一致,如對于demo目錄中的POM,ProjectName就是demo。這三個(gè)文件修改完畢之后,將它們都提交到Subversion服務(wù)器中,在各個(gè)POM的當(dāng)前目錄下執(zhí)行命令:
        svn commit pom.xml -m "my settings"
    為了每個(gè)工程都可以被單獨(dú)地運(yùn)行,需要將整個(gè)demo及其子工程都安裝到Maven倉庫中,僅需要在Maven_Demo
    目錄下執(zhí)行命令:
        mvn install
    2.6 添加Maven工程
        登錄到Continuum控制臺后,點(diǎn)擊左邊“Add Project”組中的“Maven 2.0+ Project”。添加Maven2工程有兩種情況:輸入POM文件的URL;直接上傳POM文件。前者適用于任何Maven工程;后者只能適用于沒有module,即無子工程的Maven工程。由于本文使用的Maven工程demo中有兩個(gè)子工程,所以只能使用前一種方法。
    Continuum03.gif
        只需要加載頂層工程的POM文件,Continuum會自動(dòng)加載其它moudel的POM文件。如上圖所示,在M2 POM Url中輸入:
            file:///D:/maven/continuum/Demo/pom.xml

    提交之后會看到如下的畫面,即表示Maven工程已經(jīng)被正確地加載到Continuum中了。
    Continuum04.gif
        加載工程時(shí),Continuum會將這些工程分別下載到Working Directory(見2.4節(jié))中,并在
    Build Output Directory(見2.4節(jié))中為每個(gè)工程 生成一個(gè)輸出目錄(開始只有一些log文件)。細(xì)心的朋友可能會發(fā)現(xiàn),當(dāng)上述工作完成之后,子工程“CE Maven Demo – App”和“CE Maven Demo – WebApp”的Build狀態(tài)仍然是“Queued Build”。其實(shí)這是Continuum的一個(gè)Bug!Continnum在許多情況下不會自動(dòng)刷新頁面,需要手動(dòng)刷新,即點(diǎn)擊“Show projects”按鈕。但請不要使用瀏覽器中的refresh按鈕,這樣可能會重新提交你的請求。這個(gè)Bug將在Continuum1.1中被修復(fù)。當(dāng)頁面刷新之后,App和WebApp的Build狀態(tài)將與Demo工程一致。
    2.7 第一次Build
        要Build任何一個(gè)Maven工程都十分簡單,只需要點(diǎn)擊某個(gè)工程右邊“Build Now”按鈕就可以Build該工程了。如我們點(diǎn)擊demo工程對應(yīng)的“Build Now”按鈕,那么Continuum將按照demo中的POM文件執(zhí)行Build工作。當(dāng)Build完成后,可以顯示本次Build的結(jié)果狀態(tài):成功,失敗或錯(cuò)誤(但請隨時(shí)手動(dòng)刷新頁面^_^)。而Build次數(shù)也將從0改變?yōu)?。
    Continuum09.gif
        點(diǎn)擊上圖表格中的列“Build”中的數(shù)字,將可以看到本次Build的詳細(xì)過程,如下圖所示。
    continuum10.gif
    2.8 設(shè)置時(shí)間表
        前面已經(jīng)談過,持續(xù)集成就需要進(jìn)行有規(guī)律的Build。即需要建立一個(gè)時(shí)間表,讓持續(xù)集成服務(wù)器按照這個(gè)表進(jìn)行Build。Continuum默認(rèn)的時(shí)間表為:每天的每一個(gè)整點(diǎn)進(jìn)行一次Build,即每天每隔一小時(shí)Build一次。我們也可以建立自己的時(shí)間表。點(diǎn)擊Administration組中的“Schedules”按鈕就可以發(fā)現(xiàn)當(dāng)前默認(rèn)使用的時(shí)間表,再點(diǎn)擊“Add”按鈕就可以添加新的時(shí)間表了,如下圖所示。
    Continuum06.gif
        這些參數(shù)項(xiàng)中最關(guān)鍵的是Cron Expression,它定義了Continuum執(zhí)行Build的時(shí)間規(guī)則,它的語法規(guī)則請見參加資源[4]。上圖中規(guī)定的時(shí)間表是:在每天的14:00-14:59之間,每分鐘都要進(jìn)行一次Build。勾選上Enable復(fù)選框之后,再提交,該Schedule就可以被使用了。
        為了使用新建的Schedule,我們需要進(jìn)入工程視圖頁面。點(diǎn)擊“Show Projects”-->工程名(如CE Maven Demo),就可以看到該工程的詳細(xì)信息,如下圖所示。
    Continuum07.gif
        在工程視圖的Build Definitions項(xiàng)的Goals中可以發(fā)現(xiàn),使用的Schedule就是“DEFAULT_SCHEDULE”時(shí)間表。再點(diǎn)擊“Add”按鈕,并在Schedule下拉列表框中,請選擇剛剛新建的“My First Schedule”時(shí)間表(如下圖所示),最后再提交后,新的時(shí)間表將被采用。
    Continuum08.gif
    4 小結(jié)
        根據(jù)前面的描述,應(yīng)該可以對Continuum的使用有些感性上的認(rèn)識了。由于Continuum是Maven的子項(xiàng)目,它內(nèi)置支持Maven2,所以能夠與Maven進(jìn)行良好的集成使用。現(xiàn)時(shí),Continuum也能夠支持Ant與Shell腳本工程。使用Continuum+Maven,能夠?qū)こ踢M(jìn)行干凈與頻繁的集成,可以提高Build效率并能促進(jìn)工程的健康發(fā)展。
    5 參數(shù)資源
    [1]Continuum官方網(wǎng)站. http://maven.apache.org/continuum/
    [2]Continuum的參考文檔. http://maven.apache.org/continuum/guides/index.html
    [3]Better Build with Maven. http://www.mergere.com/m2book_download.jsp
    [4]Cron Expression語法規(guī)則. http://www.opensymphony.com/quartz/api/org/quartz/CronTrigger.html
    posted on 2006-09-09 11:32 John Jiang 閱讀(6089) 評論(10)  編輯  收藏 所屬分類: Maven原創(chuàng)

    評論

    # re: Continuum入門--實(shí)例 2006-11-30 09:41 zhengoodman
    辛苦了,這正是我所需要的。感謝作者能分享自己的經(jīng)驗(yàn)。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2006-12-01 08:52 Sha Jiang
    使用Continuum持續(xù)集成Maven確實(shí)十分方便,幾分鐘就可以成功。
    但在實(shí)際的工作中,我是使用CruiseControl對Maven工程進(jìn)行持續(xù)集成。
    沒辦法,CC的人氣太旺了,公司要求用它 :D
    而且從功能上而言,CC仍然還是最好的,而且配置起來也不難。所以可能在較長的時(shí)間內(nèi),仍然是一種很好的選擇。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2006-12-04 08:41 zhengoodman
    有沒有像Appfuse的ant配置文件那樣的大型項(xiàng)目的maven2配置文件?現(xiàn)在網(wǎng)上關(guān)于maven2的都是些基本的操作。不知道有沒有實(shí)際一點(diǎn)的例子?  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2006-12-04 20:06 Sha Jiang
    Maven應(yīng)該目前并不流行,所以也沒看到很好的樣例。
    我使用Maven也只是一些最的一段時(shí)間,目前使用的項(xiàng)目也不大。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2006-12-05 08:42 zhengoodman
    非常感謝,以后還請多多關(guān)照。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2006-12-06 13:11 Sha Jiang
    有問題,可以發(fā)郵件給我。
    jiangshachina@163.com
    jiangshachina@gmail.com
    這兩個(gè)郵箱,我每天都會打開多次 ^_^

    我也只是Maven的初學(xué)者,大家一起討論,一起進(jìn)步嘛 :D  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2007-06-28 16:56 sitinspring
    好,先做個(gè)記號,有時(shí)間準(zhǔn)備從馬恩往Continuun轉(zhuǎn)。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2007-06-28 16:58 sitinspring
    不知你是否用過Maven的Eclipse plugin,有時(shí)間能否談?wù)劊?nbsp; 回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2007-06-29 08:40 Sha Jiang
    > 好,先做個(gè)記號,有時(shí)間準(zhǔn)備從馬恩往Continuun轉(zhuǎn)。
    "馬恩"?你是指Maven嗎?
    如果是指Maven的話,那么你這句話就很有問題了。
    Maven是Build工具,類似于Ant(其實(shí)官方強(qiáng)烈反對大家對Maven的這種評價(jià),他們認(rèn)為Maven是一個(gè)工程管理工具)。Continuum是一個(gè)持續(xù)集成服務(wù)器,類似于CruiseControl,它是Maven項(xiàng)目的一個(gè)子項(xiàng)目,天然支持對Maven工程的持續(xù)集成。  回復(fù)  更多評論
      

    # re: Continuum入門--實(shí)例 2007-06-29 08:43 Sha Jiang
    > 不知你是否用過Maven的Eclipse plugin,有時(shí)間能否談?wù)劊?br>我一直沒有用過Maven的Eclpse插件。
    如果你看了我其它文章,就知道我是通過將Maven配置為Eclipse的外部工具的方法而在Eclipse內(nèi)部使用Maven的。
    插件功能應(yīng)該要強(qiáng)些,但對我個(gè)而言用處不大。  回復(fù)  更多評論
      

    主站蜘蛛池模板: 日韩视频免费在线| 99免费在线观看视频| 好久久免费视频高清| 久久精品夜色噜噜亚洲A∨| 青青青视频免费观看| 免费永久看黄在线观看app| 亚洲色偷偷偷综合网| 免费高清资源黄网站在线观看| 91丁香亚洲综合社区| 一级毛片免费播放男男| 亚洲福利精品一区二区三区| 久久精品视频亚洲| 免费精品无码AV片在线观看 | 四虎永久免费观看| 日韩亚洲综合精品国产| 亚洲国产成人精品无码久久久久久综合| 国产成人不卡亚洲精品91| 亚洲国产一成久久精品国产成人综合 | 免费国产高清毛不卡片基地| 最新国产AV无码专区亚洲| 毛片在线播放免费观看| 91嫩草私人成人亚洲影院| 歪歪漫画在线观看官网免费阅读 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 日本系列1页亚洲系列| 国产亚洲色视频在线| 色欲色香天天天综合网站免费 | 婷婷国产偷v国产偷v亚洲| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 每天更新的免费av片在线观看 | 亚洲精品福利你懂| 免费v片视频在线观看视频| 免费久久人人爽人人爽av| 亚洲六月丁香六月婷婷蜜芽| 四虎影在线永久免费四虎地址8848aa | 免费福利网站在线观看| 国产成人亚洲精品青草天美| 永久免费在线观看视频| 亚洲精品色在线网站| 亚洲国产精品lv| 国产高清视频在线免费观看|