敏捷、分布式、ALM過程自動化、企業(yè)應(yīng)用架構(gòu)
          posts - 14, comments - 0, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Maven項目管理理解與使用

          Posted on 2012-04-06 14:48 一酌散千憂 閱讀(497) 評論(0)  編輯  收藏 所屬分類: 敏捷過程方法

          項目經(jīng)理(Project manager)是項目的支柱與核心,維基百科的定義:項目經(jīng)理是項目管理方面的專家,負(fù)責(zé)項目的策劃、執(zhí)行和結(jié)束,即整個生命周期過程。項目經(jīng)理手中的“干將莫邪”便是軟件開發(fā)過程方法(software development process/software development life cycle (SDLC)),可能采取的有RUPRational Unified Process),敏捷等。

          其實軟件開發(fā)區(qū)分階段已經(jīng)廣為大家接受,普遍的概念即需要區(qū)分為分析、設(shè)計、實施、測試、發(fā)布,過程中會產(chǎn)生若干產(chǎn)物,如需求說明書、概要設(shè)計、詳細(xì)設(shè)計等。若提及過程方法,如RUP的話,主要分為四大階段,先啟(Inception)、精華(Elaboration)、構(gòu)建(Construction)、交付(Transition)迭代的開發(fā)方式,而Scrum的核心概念則是Sprint

           

          Maven在項目管理中有那些幫助呢?Maven能夠從一個信息中心為項目提供構(gòu)建,報告,文檔編制等工作。在Maven官方介紹《What is maven》中介紹了maven的項目目標(biāo)(Objectives)(http://maven.apache.org/what-is-maven.html),如下:

          l         簡化構(gòu)建過程

          l         提供統(tǒng)一的構(gòu)建系統(tǒng)

          l         提供項目質(zhì)量信息

          l         提供對于開發(fā)最佳實踐的指導(dǎo)

          l         允許對于新特性的透明整合

           

          對于Maven影響最為深刻的就是它的構(gòu)建系統(tǒng),幾乎貫穿了整個實施階段。作為對比我們參考一下RUPConstruction階段,以及Scrum的單個Sprint過程。

           

          RUPConstruction階段的目標(biāo):

          這個階段的目標(biāo)是澄清需求并基于架構(gòu)基線完成開發(fā)。

          l          通過優(yōu)化資源來縮減開支,并避免無意義的爭執(zhí)與返工。

          l          實用性與質(zhì)量兼具。

          l          盡快發(fā)布可用版本。

          l          完成對所有功能的分析、設(shè)計、開發(fā)、測試。

          l          采用增量迭代的模式完成開發(fā)并準(zhǔn)備交付。

          l          檢查項目發(fā)布的所有資源是否已經(jīng)準(zhǔn)備完全。

          l          形成項目組之間的并行開發(fā)。

           

          在《硝煙中的ScrumXP》一書中,介紹了作者實施Scrum的過程。在一個Sprint中,不是只有Sprint backlogburn down chat等,實施過程中的敏捷思想也是其中的核心,我們來看看敏捷信奉的一部分最佳實踐:

          l          簡單設(shè)計(Simple Design

          l          結(jié)對編程(Pair Programming

          l          測試驅(qū)動(Test-Driven Development

          l          小規(guī)模發(fā)布(Small Releases

          l          持續(xù)集成(Continuous Integration

          l          集體擁有代碼(Collective Code Ownership

          l          編碼標(biāo)準(zhǔn)(Coding Standard

           

          Maven對于上述目標(biāo)中的質(zhì)量(實用性與質(zhì)量,以測試驅(qū)動)、可用(可用版本,小規(guī)模)、資源管理等均能發(fā)揮較大的作用。主要是其定義了一套完整優(yōu)秀的構(gòu)建生命周期機制,其基本階段如下:

          l         validate驗證項目正確性及依賴有效性

          l         compile編譯項目源碼

          l         test使用合適的單元測試框架對編譯后的源碼進(jìn)行測試,測試代碼不會被打包或發(fā)布

          l         package將編譯后的代碼以規(guī)定格式打包,如Jar

          l         integration-test將打包后的代碼放置于環(huán)境中進(jìn)行集成測試

          l         verify檢查打包的有效性并驗證質(zhì)量標(biāo)準(zhǔn)

          l         install將包裝載入本地倉庫,以提供與其他項目的依賴

          l         deploy將包發(fā)布至遠(yuǎn)程倉庫中

          其上每一個階段實際都分為前中后三個階段,用戶可以定義在每一個階段前后進(jìn)行自定義的操作,打造自己的構(gòu)建流程(如在某個階段執(zhí)行前制定特殊的配置文件,完成后再改回默認(rèn))。對于階段的實際使用方式,如:validate可以項目所有依賴有效,test可以針對dao層進(jìn)行單元測試,intergration-test可以對完整業(yè)務(wù)流程或服務(wù)層等進(jìn)行集成測試。

           

          在項目中實際使用的經(jīng)驗,對于標(biāo)簽的使用心得:

          1.<dependency> - 依賴標(biāo)簽,最重要的標(biāo)簽,也是Maven的基礎(chǔ)功能。

                        <dependency>

                               <groupId>junit</groupId>

                               <artifactId>junit</artifactId>

                               <version>4.8.1</version>

                               <scope>test</scope>

                        </dependency>

           

          2. <repository> - 資源倉庫,可以包含多個,常用的有MavenJboss等,如下是公司內(nèi)建的Nexus資源庫。

          <repository>

                               <id>Suntang's Maven Repository</id>

                               <name>Suntang Nexus Repository</name>

                               <url>http://10.10.10.33:8081/nexus/content/groups/public</url>

                        </repository>

          3. <profile> - 解釋為情景模式可能較為合適。可以有多個,在何種場景下會使用哪些屬性、插件等。如下例子便是當(dāng)缺失某個文件時激活。

          (感覺寫的不錯的一篇,http://blog.csdn.net/turkeyzhou/article/details/4894657

          <profile>

           <activation>

          <file>

          <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>

          </file>

          </activation>

           </profile>

          4.<build> - 構(gòu)建過程。是進(jìn)行整個項目管理的核心標(biāo)簽。重點需要掌握的知識就是生命周期。

          http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

          下面的例子就是制定了打包時的資源路徑,并且定義了最終打包的名稱。

           

                 <build>

                        <resources>

                               <resource>

                                      <directory>src/main/resources</directory>

                                      <includes>

                                             <include>**/*</include>

                                      </includes>

                               </resource>

                               <resource>

                                      <directory>src/main/assembly</directory>

                                      <includes>

                                             <include>**/*</include>

                                      </includes>

                               </resource>

                        </resources>

           

                        <finalName>po</finalName>

                 </build>

           

          4.< plugin > - 支持插件。如單元測試自動化,之前提到的Ant的插件等。若有某些功能覺得不順手,可以嘗試官網(wǎng)找一下有沒有合適的插件(http://maven.apache.org/plugins/index.html)。

          下面的例子就是在集成測試中,只運行后綴為TestSuitex.java的測試類

           

                               <plugin>

                                      <groupId>org.apache.maven.plugins</groupId>

                                      <artifactId>maven-surefire-plugin</artifactId>

                                      <version>2.4.3</version>

                                      <configuration>

                                             <junitArtifactName>junit:junit</junitArtifactName>

                                             <forkMode>once</forkMode>

                                      </configuration>

                                      <executions>

                                             <execution>

                                                    <id>default-test</id>

                                                    <phase>integration-test</phase>

                                                    <goals>

                                                           <goal>test</goal>

                                                    </goals>

                                                    <configuration>

                                                           <skip>false</skip>

                                                           <includes>

                                                                  <include>**/*TestSuitex.java</include>

                                                           </includes>

                                                    </configuration>

                                             </execution>

                                      </executions>

                               </plugin>

           


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 白银市| 奎屯市| 西乌珠穆沁旗| 临沧市| 内丘县| 扶绥县| 呼伦贝尔市| 蒙城县| 仙桃市| 沙河市| 岱山县| 济源市| 永寿县| 时尚| 天祝| 泽库县| 宁南县| 璧山县| 万宁市| 和平县| 富裕县| 余姚市| 宽城| 榆林市| 广宁县| 敦化市| 天祝| 祁阳县| 鹤岗市| 黎平县| 哈尔滨市| 专栏| 微山县| 沁水县| 邹平县| 乐至县| 台南县| 阿拉善右旗| 宾阳县| 精河县| 拉孜县|