maven自定義archetype

1.前言
  在工做過程當中必然會遇到建立項目的蛋疼事,一個項目包含茫茫多的配置文件。例如:Spring、mybatis、log4j、pom.xml、git等,其餘的還包括項目目錄骨架。整個過程下來順利的話幾十分鐘,若是對公司項目配置不瞭解的狀況下,幾個小時都是有可能的。
      maven的強大就不言而喻了,自定義項目骨架主要利用到 archetype插件。在IDE中建立maven項目時,能夠選擇archetype類型快速建立項目目錄。例如最多見的maven-archetype-plugin 的quickstart。maven考慮到通用性,提供的是最簡單的目標。
      新建項目時,配置文件每每是從其餘項目拷貝過來的,拷貝的問題在於很容易踩坑,而且不容易定位問題。
      利用maven一鍵生成項目骨架能夠解決全部的問題,下面切入正題吧。
 
2.建立模板項目
  模板項目也是一個普通的maven項目,可是其有特定的目錄結構即實際使用的項目的目錄結構。
  第一步:首先找一個現有原型項目,這裏假設原型項目爲 A項目,A項目具備全部詳細的配置信息。
  第二步:改造A項目
    刪除A項目裏全部特定業務相關的代碼、文件。保留最後生成的最小配置文件集合。通常項目裏的配置文件包括如下內容:
      • pom.xml的jar包依賴、插件配置,保留最小依賴集
      • Spring、Struts二、mybatis配置  
      • log4j.xml        
  另外還有項目的基本包結構配置,常見的包包括:dao、service、service.impl、util、entity等。
  最好爲每一個配置文件編寫一個demo,並註釋掉,這樣方便團隊其餘成員理解和使用。爲每一個包目錄編寫一個demo,例如dao層。這樣在使用生成的archetype建立項目時,就會生成對應的配置文件和對應的包目錄。
  到這步一個項目基本骨架雛形已經成型了,其實在整個過程當中這一步是真正咱們須要關心的。一個乾淨、易用的模板纔是最好的。
  這裏咱們稱改裝後的A項目爲A-min(hhyz-archetype-web)項目.
    
  第三步: 在項目的POM文件中增長:
    
<build>
    <finalName>hhyz-archetype-web</finalName>
        <pluginManagement>  
            <plugins>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-archetype-plugin</artifactId>  
                    <version>2.2</version>  
                </plugin>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-compiler-plugin</artifactId>  
                    <configuration>  
                        <source>1.5</source>  
                        <target>1.5</target>  
                    </configuration>  
                </plugin>  
                <plugin>  
                    <groupId>org.apache.maven.plugins</groupId>  
                    <artifactId>maven-resources-plugin</artifactId>  
                    <configuration>  
                        <encoding>UTF-8</encoding>  
                    </configuration>  
                </plugin>  
            </plugins>  
        </pluginManagement>
</build>

  第四步: 從A-min項目中建立maven骨架項目git

    打開CMD進入命令行,在項目根目錄裏執行: mvn archetype:create-from-project。web

    成功執行完以後,在target/generated-sources/ 下有個archetype目錄,這個就是生成的 archetype。能夠看到這個目錄其實就是普通的maven項目,也就是咱們最終的骨架模板項目,咱們稱之爲A-template項目。apache

    有幾個目錄、文件須要說明:mybatis

      • src/main/resources/archetype-resources  經過A-template骨架建立的項目包含的全部的文件和目錄都在這個目錄下
      • src/main/resource/META-INF/maven/archetype-metadata.xml  此文件是配置文件,告訴archetype插件,archetype-resources裏面哪些文件須要包含到建立出的項目裏。打開這個文件發現有個fileSets標籤,包含一系列的fileSet標籤。不難發現fileSet就是對archetype-resources下的資源描述。          

  第五步:改造A-templateeclipse

    archetype:create-from-project並不是徹底智能,須要本身稍加修改maven

      • 修改pom.xml文件

          修改packing的值爲jar或者war測試

      • 修改archetype-metadata.xml
<requiredProperties>
      <requiredProperty key="groupId"/>
      <requiredProperty key="artifactId"/>
      <requiredProperty key="version">
          <defaultValue>1.0.0</defaultValue>
      </requiredProperty>
  </requiredProperties>

          在fileSets同級下增長requiredProperties標籤。requiredProperties定義模板項目中一些參數值,內置的參數包括:groupId,artifactId,version,package。本身能夠提供這些參數的默認值,也能夠增長本身額外的參數。大部分狀況下,內置的參數足夠用。fileSet標籤有一個filtered=「true」屬性,表示該fileSet可使用參數變量。在文件中引用參數變量的方式${參數名},例如${package}.一般生成A-template項目時,archetype插件會掃描A-min全部的文件,把須要替換爲參數的地方自動替換。畢竟代碼沒有那麼智能,有些地方會有問題。因此,咱們要檢查每一個文件的參數部分是否是咱們預期的。增長參數、刪除參數來達到咱們的要求。           ui

  第六步:部署生成的archetype到本地倉庫spa

    cd進入generated-sourced/archetype目錄,運行maven命令:mvn clean install,到這裏咱們的模板骨架項目基本完成。插件

3.使用自定義的模板建立項目

  方式一:使用命令行

        在本身的workspace下執行  mvn archetype:generate -DarchetypeCatalog=local  -o 
選擇剛纔的模板項目的編號,按照提示輸入參數值。這樣項目就建立完畢了。若是找不到咱們的模板項目,檢查一下~/.m2/目錄下是否有archetype-catalog.xml文件。若是沒有在A-template的根目錄執行一下 
mvn archetype:update-local-catalog -o
 
  方式二:經過IDE建立(推薦)
  
  注:有時候會找不到新加的archetype,重啓eclipse就行了。

 

4.部署到公司內部的maven中央倉庫
 
     通過反覆測試以後,咱們的模板項目就能夠發佈了。把咱們的模板項目部署到公司內部的maven倉庫。其餘團隊成員就能夠經過方式二使用咱們的骨架模板建立項目了。IDE幫咱們自動下載模板項目的jar包到本地倉庫。方式一則須要本身手動下載 ,在任何一個項目裏添加咱們的模板項目依賴,執行maven eclipse:eclipse命令,就會下載jar包。方式一比較麻煩,推薦使用方式二,簡單易用。
相關文章
相關標籤/搜索