架構師工具箱(二)Maven——Maven生成Archetype

寫在前面:

  • 你好,歡迎關注!
  • 我熱愛技術,熱愛分享,熱愛生活, 我始終相信:技術是開源的,知識是共享的!
  • 博客裏面的內容大部分均爲原創,是自己日常的學習記錄和總結,便於自己在後面的時間裏回顧,當然也是希望可以分享 自己的知識。如果你覺得還可以的話不妨關注一下,我們共同進步!
  •  個人除了分享博客之外,也喜歡看書,寫一點日常雜文和心情分享,如果你感興趣,也可以關注關注!
  •  公衆號:傲驕鹿先生

目錄

一、關於Archetype的理解

二、使用archetype創建項目

三、生成自定義archetype

四、使用自定義archetype

五、上傳archetype到私服


一、關於Archetype的理解

Archetype是一個Maven項目的模板工具包,它定義了一類項目的基本架構。Archetype爲開發人員提供了創建Maven項目的模板,同時它也可以根據已有的Maven項目生成參數化的模板。通過archetype,開發人員可以很方便地將一類項目的最佳實現應用到自己的項目中。在一個Maven項目中,開發者可以通過archetype提供的範例快速入門並瞭解該項目的結構與特點。

maven提供了一些官方的archetype給開發者使用,主要如下:

  • maven-archetype-quickstart
  • maven-archetype-simple
  • maven-archetype-webapp

1、maven-archetype-quickstart

  • 默認的Archetype,基本內容包括:
  • 一個包含junit依賴聲明的pom.xml
  • src/main/java主代碼目錄及一個名爲App的類
  • src/test/java測試代碼目錄及一個名爲AppTest的測試用例

2、maven-archetype-webapp
一個最簡單的Maven war項目模板,當需要快速創建一個Web應用的時候可以使用它。生成的項目內容包括:

  • 一個packaging爲war且帶有junit依賴聲明的pom.xml
  • src/main/webapp/目錄
  • src/main/webapp/index.jsp文件
  • src/main/webapp/WEB-INF/web.xml文件

當然了,除此之外還有其他的一些Maven工程模板,並給用戶提供生成相關工程模板版本的參數化方法。

我們在創建一個maven項目的時候會出現一個如下的界面:

maven提供的模板:

1:appfuse-basic-jsf (創建一個基於Hibernate,Spring和JSF的Web應用程序的原型)
2: appfuse-basic-spring(創建一個基於Hibernate,Spring和Spring MVC的Web應用程序的原型)
3: appfuse-basic-struts(創建一個基於Hibernate,Spring和Struts 2的Web應用程序的原型)
4: appfuse-basic-tapestry(創建一個基於Hibernate,Spring 和 Tapestry 4的Web應用程序的原型)
5: appfuse-core(創建一個基於Hibernate,Spring 和 XFire的jar應用程序的原型)
6: appfuse-modular-jsf(創建一個基於Hibernate,Spring和JSF的模塊化應用原型)
7: appfuse-modular-spring(創建一個基於Hibernate, Spring 和 Spring MVC 的模塊化應用原型)
8: appfuse-modular-struts(創建一個基於Hibernate, Spring 和 Struts 2 的模塊化應用原型)
9: appfuse-modular-tapestry (創建一個基於 Hibernate, Spring 和 Tapestry 4 的模塊化應用原型)
10: maven-archetype-j2ee-simple(一個簡單的J2EE的Java應用程序)
11: maven-archetype-marmalade-mojo(一個Maven的 插件開發項目 using marmalade)
12: maven-archetype-mojo(一個Maven的Java插件開發項目)
13: maven-archetype-portlet(一個簡單的portlet應用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart()
16: maven-archetype-site-simple(簡單的網站生成項目)
17: maven-archetype-site(更復雜的網站項目)
18:maven-archetype-webapp(一個簡單的Java Web應用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (無殘留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 應用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存檔)
28: maven-archetype-sar(JBoss 服務存檔)
29: wicket-archetype-quickstart(一個簡單的Apache Wicket的項目)
30: scala-archetype-simple(一個簡單的scala的項目)
31: lift-archetype-blank(一個 blank/empty liftweb 項目)
32: lift-archetype-basic(基本(liftweb)項目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一個簡單的原型)
37: myfaces-archetype-helloworld-facelets(一個使用MyFaces和Facelets的簡單原型)
38: myfaces-archetype-trinidad(一個使用MyFaces和Trinidad的簡單原型)
39: myfaces-archetype-jsfcomponents(一種使用MyFaces創建定製JSF組件的簡單的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)
 

二、使用archetype創建項目

通常我們在創建一個maven項目的時候會使用idea界面窗口去創建,創建時選擇一個模板即可,操作簡單。

在下面的例子中,我們將在 E:\Maven 文件夾下創建一個基於 maven 的 java 應用項目。命令格式如下:

mvn archetype:generate -DgroupId=com.setalone -DartifactId=ArchetypeTest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

參數說明:

  • -DgourpId: 組織名,公司網址的反寫 + 項目名稱
  • -DartifactId: 項目名-模塊名
  • -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,創建一個簡單的 Java 應用
  • -DinteractiveMode: 是否使用交互模式

項目創建完成後在idea中打開可以看到如下的目錄結構:

三、生成自定義archetype

創建maven項目,每次都要選擇一個骨架,總有一部分東西是我們不需要的,有時候創建項目時選擇了一個骨架,用的時候,需要刪刪減減的,解決辦法就是創建一個自己的自定義骨架,每次創建maven的時候,就使用自己的骨架,相對方便多了。


archetype自定義的優勢:

  • 可以集成公共的開發組件,提高開發效率。公司內部對中間件的封裝,可以集成進來;開源社區的優質輪子,可以集成進來。這樣,項目可以有大量的優秀組件,避免重複造輪子。另外,如果需要創建新項目,可以一鍵生成,不必在複製一個項目,更改項目名,刪減代碼之類的。
  • 項目風格統一,便於統一維護。試想,同一個archetype生成的項目,無論是項目結構,還是項目依賴的組件,應該都是類似的。如果有新的開發同學進入項目,熟悉了某個項目,其它項目除了業務邏輯,基本上不需要理解成本。

1、在IDEA中進行自定義archetype

在創建好的項目ArchetypeTest的pom文件中添加標籤:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>3.1.1</version>
</plugin>

archetype:create-from-project,執行maven 命令

archetype:create-from-project命令執行完之後,項目會生成target目錄文件,至此,骨架相當於已經生成,但是需要安裝,還需要把骨架添加到maven中。

選擇target文件執行install命令

命令執行完成後打印日誌在控制檯,如圖所示的地址是在本地倉庫中生成xml文件的地址

Installing E:\Maven\ArchetypeTest\target\generated-sources\archetype\target\ArchetypeTest-archetype-1.0-SNAPSHOT.jar to D:\maven_repository\com\setalone\ArchetypeTest-archetype\1.0-SNAPSHOT\ArchetypeTest-archetype-1.0-SNAPSHOT.jar
Installing E:\Maven\ArchetypeTest\target\generated-sources\archetype\pom.xml to D:\maven_repository\com\setalone\ArchetypeTest-archetype\1.0-SNAPSHOT\ArchetypeTest-archetype-1.0-SNAPSHOT.pom

執行archetype:crawl命令

到此骨架生成,我們還需要將骨架加入到maven中去。

重新創建一個maven項目的時候選擇Add Archetype,依次填入Groupld,ArtifactId,Version。

點擊ok即可選擇自定義Archetype了。

2、在cmd窗口中進行自定義archetype

在idea中創建自定義archetype時也是使用了maven命令進行創建的,所以在cmd窗口中,我們也只需要切換的自行創建的maven項目的對應目錄下執行maven命令即可進行創建,在這裏不做演示了。

四、使用自定義archetype

執行mvn archetype:generate -DarchetypeCatalog=local從本地archeType模板中創建項目。

 mvn archetype:generate -DarchetypeCatalog=local

然後會讓你選擇模板序號和groupId``artifactId``versionpackage信息:

當然,也可以使用IDEA來幫我們用圖形界面使用archeType模板創建項目。

五、上傳archetype到私服

上傳archetype到私服的操作將在後續的內容中詳細進行說明,後續會更新《Nexus環境搭建、上傳配置》。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章