1. 程式人生 > >Maven之自定義archetype生成專案骨架

Maven之自定義archetype生成專案骨架

摘要:使用過Maven的人都知道maven中有許多功能都是通過外掛來提供的,今天我們來說一下其中的一個外掛:maven-archetype-plugin

,通過該外掛可以自定義符合我們自己需求的archetype。

一:什麼是Archetype

總之,原型是一個Maven專案模板工具包。一個原型被定義為從其中相同型別的所有其它事情是由一個原始圖案或模型。名稱配合,因為我們正在努力提供一種系統,該系統提供了一種生成Maven專案的一致的手段。原型將幫助作者為使用者建立Maven專案模板,併為使用者提供了手段,產生的這些專案模板引數化的版本。


使用原型提供了一個很好的方式,迅速使開發人員在與您的專案或組織採用最佳實踐一致的方法。在Maven的專案中,我們使用原型,試圖讓我們的使用者和執行儘可能快地通過提供展示許多的Maven的功能,同時引入新的使用者通過採用Maven的最佳實踐的示例專案。在幾秒鐘內一個新的使用者可以有一個工作Maven專案作為跳板用於調查更多的功能,Maven中。我們也試圖使原型機制新增劑和由我們的意思是允許一個專案的一部分被捕獲在一個原型,使得專案的部件或方面可以被新增到現有的專案。這方面的一個很好的例子是Maven站點原型。如果,例如,您使用的快速啟動原型生成一個工作專案,你可以迅速通過使用現有專案中的網站原型建立網站的專案。你可以做這樣的事與原型。


您可能要在組織內部規範J2EE開發,所以你可能要提供原型為EJB,或者,或者您的Web服務的戰爭。一旦這些原型建立和部署在您的組織的資源庫,他們都可以在組織內使用的所有開發人員。

上面是我根據maven官網在百度翻譯出來的,大家將就著看,大概意思就是archetype是Maven專案模板工具包,也就是一個模板工程。

二:使用archetype建立專案

  1. mvn archetype:generate  

上面的命令執行後會輸出很多maven官方提供的archetype,但是這些archetype生成的專案骨架都不能夠滿足我們的需求,所以這就需要我們自己開發一個archetype來滿足我們自己的開發需求,下面我把我自己自定義這個archetype的過程記錄一下方便日後回憶。

三:建立自定義的archetype專案

1.首先使用sts(spring的一款開發工具,下載地址到spring官網)建立一個maven project,然後把配置好的一些公用的東西放到相應的目錄下面比如說會將一些常用的java程式碼存放到src/main/java目錄下面;會將一些通用的配置檔案放到src/main/resources目錄下面;如果是javeEE工程,還會有一些jsp等等的檔案存放到src/main/webapp目錄下面,如下圖所示:


2.然後在建立的maven project的pom.xml檔案中新增archetype外掛,如下面所示:

  1. <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.     <modelVersion>4.0.0</modelVersion>
  4.     <parent
    >
  5.         <groupId>org.micaicms</groupId>
  6.         <artifactId>micaicms-pom</artifactId>
  7.         <version>1.0</version>
  8.     </parent>
  9.     <artifactId>micaicms-web-archetype</artifactId>
  10.     <packaging>jar</packaging>
  11.     <name>micaicms web archetype</name>
  12.     <description>micaicms-web-archetype</description>
  13.     <distributionManagement>
  14.         <repository>
  15.             <id>releases</id>
  16.             <name>Micaicms Releases</name>
  17.             <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
  18.         </repository>
  19.         <snapshotRepository>
  20.             <id>snapshots</id>
  21.             <name>Micaicms Releases</name>
  22.             <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
  23.         </snapshotRepository>
  24.     </distributionManagement>
  25.     <build>
  26.         <pluginManagement>
  27.             <plugins>
  28.                 <plugin>
  29.                     <groupId>org.apache.maven.plugins</groupId>
  30.                     <artifactId>maven-archetype-plugin</artifactId>
  31.                     <version>2.2</version>
  32.                 </plugin>
  33.                 <plugin>
  34.                     <groupId>org.apache.maven.plugins</groupId>
  35.                     <artifactId>maven-compiler-plugin</artifactId>
  36.                     <configuration>
  37.                         <source>1.5</source>
  38.                         <target>1.5</target>
  39.                     </configuration>
  40.                 </plugin>
  41.                 <plugin>
  42.                     <groupId>org.apache.maven.plugins</groupId>
  43.                     <artifactId>maven-resources-plugin</artifactId>
  44.                     <configuration>
  45.                         <encoding>UTF-8</encoding>
  46.                     </configuration>
  47.                 </plugin>
  48.             </plugins>
  49.         </pluginManagement>
  50.     </build>
  51. </project>


3.執行你自己配置好的自定義的archetype專案

先執行mvn clean install
安裝該archetype專案到你的本地倉庫

釋出該archetype專案到你的本地私服(nexus)

注意;這裡如果你需要釋出這個archetype到你的本地私服上去,那麼需要在maven裡面配置許可權,主要是maven裡面的settings.xml檔案,我
的settings.xml檔案配置如下,配置好以後就可以執行釋出命令了


再執行mvn deploy

4.檢視你剛才釋出到nexus私服上去的archetype,如下圖:


四:在eclipse/sts開發工具中配置你釋出到私服上的自定義的archetype

1.開啟你的開發工具,eclipse或者sts,我這裡是sts


2.選擇Window->Preferences->Maven->Archetypes


3.點選Add Remote Catalog,輸入你的nexus私服中archetype的地址,我這裡是
http://127.0.0.1:8081/nexus/content/groups/public/archetype-catalog.xml
輸入Description,隨便輸入都可以,我這裡是micaicms-web-archetype


4.點選Ok,點選Apply


5.重新啟動你的開發工具eclipse或者sts

五:使用自定義的archetype生成自定義的專案骨架

1.選擇New->Maven Project->Next


2.選擇你配置好的archetype,如下圖:


3.輸入對應的groupId,artifactId,package,如下圖:
因為我已經新建過該專案了,所以我這裡不能點選Finish,你們的應該可以


4.最後生成的專案骨架如下圖:


5.修改資料庫配置檔案,匯入初始化sql指令碼,如下圖:


6.部署專案到tomcat下面訪問即可,預設的訪問路徑為:ht:tp://localhost:8080/micaicms-ssmb/project/list

六:Maven的自定義archetype原始碼工程下載地址:

七:Maven的自定義archetype生成的基礎專案骨架工程的下載地址:

==============參考二=================================

http://www.tuicool.com/articles/Bruu2a

Maven外掛之maven-archetype-plugin

學過Maven的人,都知道用MyEclipse的Maven外掛生成一個專案骨架,比如maven-archetype-quickstart,這個原型就是最常用的之一。

剛開始使用骨架的時候,感覺很好,減少了重複勞動,提高了開發效率。使用的時間久了,就會發現,Maven Archetype提供的專案骨架不能百分百的滿足公司規定的專案結構,不免要手動改些東西。

此時,自然而然的就會想到:如果能將公司(或專案組)規定的專案結構作為一個 骨架原型 上傳個私服,作為模版供專案使用,就無須修改任何的檔案。也減少了專案環境搭建時間、降低了出錯率等。

1、 進入模版專案的根目錄,執行命令:mvn archetype:create-from-project

生成以該專案為模版的專案原型(archetype),具體的專案結構在target/generated-sources目錄下;

注意:生成的archetype包含模板專案中所有的文件,避免冗餘,可將多餘檔案刪除,並對其專案結構做一些整理!!!

a、修改archetype目錄下pom.xml,將archetype的名稱修改成你喜歡的;

b、可將資料夾改成_rootArtifactId_,這樣生成專案結構時,這個目錄名稱就會變成新的專案名稱了;

這些都整理好了之後,可以將其釋出到nexus倉庫供其它同事使用了,釋出的方法如下:

2 、在archetype目錄下的pom.xml中新增maven倉庫配置:

<distributionManagement>

<repository>

<id>releases</id>

<url>http://192.168.10.254:8081/nexus/content/repositories/releases</url>

</repository>

<snapshotRepository>

<id>snapshots</id>

<url>http://192.168.10.254:8081/nexus/content/repositories/snapshots</url>

</snapshotRepository>

</distributionManagement>

3 、釋出archetype, 到${basedir}/target/generated-sources/archetype目錄下, 執行命令:

mvn deploy

4 、使用該原型建立新專案, 任意目錄下執行 命令:

mvn archetype:generate -DarchetypeGroupId=com.ktr -DarchetypeVersion=1.0 -DarchetypeArtifactId=ktr-archetype

注:表格的內容為轉載。

詳細介紹瞭如何快速建立和使用Archetype。

(最佳實踐)

實際應用中,項 目組(或者部門/公司)會有自己的私服,因此以下的介紹前提條件是配有自己的私服。

第一步 : 選擇模版專案,生成原型。

選擇生成Archetype的模板專案,執行命令: mvn clean archetype:create-from-project

但實際應用中,模板專案選好後,一般無須指定任何引數。

此時專案的Archetype已經生成,位於${basedir}/target/generated-sources/archetype/目錄下。

第二步: 將Archetype上傳到私服,共享給其他人使用(需要有deploy許可權和scm配置)。

到${basedir}/target/generated-sources/archetype/目錄下執行命令: mvn deploy

將該原型上傳到私服,此時前期工作完成,以後可以使用該原型生成專案骨架。

第三步: 使用Archetype生成專案骨架。

任意目錄下,執行命令:

mvn archetype:generate

相關推薦

Maven定義archetype生成專案骨架

摘要:使用過Maven的人都知道maven中有許多功能都是通過外掛來提供的,今天我們來說一下其中的一個外掛:maven-archetype-plugin,通過該外掛可以自定義符合我們自己需求的archetype。一:什麼是Archetype總之,原型是一個Maven專案模板工

Maven定義archetype生成專案骨架

通過 maven-archetype-plugin 外掛可以自定義符合我們自己需求的archetype。 1.什麼是Archetype Archetype是一個Maven專案模板工具包。通過Archetype我們可以快速搭建Maven專案。 常見的

微服務時代定義archetype(模板/骨架/腳手架)

1. 場景描述 (1)隨著微服務越來越常見,一個大的專案會被拆分成多個小的微服務,jar包以及jar之間的版本衝突問題,變得越來越常見,如何保持整體微服務群jar及版本統一,也變成更加重要了,maven的自定義archetype(模板/骨架/腳手架)很好的解決了這個問題,在新建微服務專案的時候,使用統一的ar

安卓專案實戰強大的網路請求框架okGo使用詳解(二):深入理解Callback定義JsonCallback

前言 JSON是一種取代XML的資料結構,和xml相比,它更小巧但描述能力卻不差,由於它的小巧所以網路傳輸資料將減少更多流量從而加快了傳輸速度,目前客戶端伺服器返回的資料大多都是基於這種格式的,相應的我們瞭解的關於json的解析工具主要有兩個:Gson(Google官方出的)和fas

Maven 定義archeType

1. 什麼是archeType 我們在建立maven專案的時候,你會發現有這麼多的apache提供的模板。 或者使用 mvn archetype:generate命令來快速建立maven專案,也會有很多個選項,讓你選擇模板序號。那每個模板之間有什麼區別呢? 每個模板裡

maven生成專案骨架時報錯ResourceManager : unable to find res

生成骨架時生成archetype.xml指令碼 問題描述:沒有方法通過*號批量匹配檔案[INFO] ----------------------------------------------------------------------------[INFO] Using follo

maven定義Archetype

1、建立模板專案     如下 2、模板專案的pom.xml中新增archetype外掛 <plugin> <groupId>org.apache.maven.plugins</groupId> <

Mybatis框架(9)---Mybatis定義外掛生成雪花ID做為表主鍵專案

Mybatis自定義外掛生成雪花ID做為主鍵專案 先附上專案專案GitHub地址 spring-boot-mybatis-interceptor 有關Mybatis雪花ID主鍵外掛前面寫了兩篇部落格作為該專案落地的鋪墊。 1、Mybatis框架---Mybatis外掛原理 2、java演算法---靜態內部類

「免費開源」基於Vue和Quasar的前端SPA專案crudapi後臺管理系統實戰定義元件(四)

# 基於Vue和Quasar的前端SPA專案實戰之序列號(四) ## 回顧 通過上一篇文章 [基於Vue和Quasar的前端SPA專案實戰之佈局選單(三)](https://www.cnblogs.com/crudapi/p/14536313.html)的介紹,我們已經完成了佈局選單,本文主要介紹序列號功能

WF4.0以上使用代碼完整定義動態生成執行工作流Xaml文件

load 控制 brush 類型 rpv 返回 cap 並且 sco 給大家分享一下,如何完全使用代碼自定義的創建生成工作流文件(用代碼創建Xaml文件),並且動態加載運行所生成的工作流。 工作流生成後 在Xaml文件裏的主要節點如下: 輸入輸出參數 <x

python定義異步IO客戶端

class close sel 封裝 [0 urn 簡單 pytho syn #!/usr/bin/env python # -*- coding: utf8 -*- # __Author: "Skiler Hao" # date: 2017/5/16 15:04

Hadoop實戰-Flume定義Sink(十九)

current ioe back urn oop print out java try import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;

C#定義特性

創建 tip comm 字段 運算符 包含 自動 名稱 程序   在前面介紹的代碼中有使用特性,這些特性都是Microsoft定義好的,作為.NET Framework類庫的一部分,許多特性都得到了C#編譯器的支持。   .NET Frmework也允許定義自己的特性。自

Qt定義搜索框——QLineEdit裏增加一個Layout,還不影響正常輸入文字(好像是一種比較通吃的方法)

too 步驟 set box 文本 csdn sub void 鼠標 簡述 關於搜索框,大家都經常接觸。例如:瀏覽器搜索、Windows資源管理器搜索等。 當然,這些對於Qt實現來說毫無壓力,只要思路清晰,分分鐘搞定。 方案一:調用QLineEdit現

前端學PHP定義模板引擎

php什麽是網站模板?準確地說,是指網站頁面模板,即每個頁面僅是一個板式,包括結構、樣式和頁面布局,是創建網頁內容的樣板,也可以理解為已有的網頁框架。可以將模板中原有的內容替換成從服務器端數據庫中動態內容,目的是可以保持頁面風格一致  PHP是一種HTML內嵌式的在服務器端執行的腳本語言,所以大部分PHP開發

Django定義分頁

plugin style 定義 mage user_list .sh render 進行 blog 應用於各頁面中的分頁實現,實現的結果如下圖 1.先自定義一個有關分頁的PageInfo類 1 class PageInfo(object): 2 3

每天一個JS 小demo定義滾動條。主要知識點:事件應用

prevent 數據 滾動 sca listener 視頻 希望 特效 poi <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>D

vue2.0學習筆記定義組件

2.0 sco ron 自定義組件 定義 temp use 使用 imp step one: 推薦結構 step two: Loading.vue <template> <h3>{{msg}}<

angular定義管道

pan code 參數 angular log core pipe cor 替換 1,裝了angular2 的 cli之後,cmd中命令建立個管道文件 ng g p <name>;   如建一個在pipe文件中建一個add.pipe.ts文件 可以這麽麽寫 ng

Spring Boot筆記定義啟動banner

bottom rule mage ack eight ooo manifest log blank 控制banner內容 Spring Boot啟動的時候默認的banner是spring的字樣,看多了覺得挺單調的,Spring Boot為我們提供了自定義banner的功