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創建項目

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插件,如下面所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.micaicms</groupId><artifactId>micaicms-pom</artifactId><version>1.0</version></parent><artifactId>micaicms-web-archetype</artifactId><packaging>jar</packaging><name>micaicms web archetype</name><description>micaicms-web-archetype</description><distributionManagement><repository><id>releases</id><name>Micaicms Releases</name><url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url></repository><snapshotRepository><id>snapshots</id><name>Micaicms Releases</name><url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url></snapshotRepository></distributionManagement><build><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></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源碼工程下載地址:

https://github.com/sxdtzhaoxinguo/micaicms-web-archetype


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

https://github.com/sxdtzhaoxinguo/micaicms-ssmb




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443425.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443425.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443425.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

匆匆那年之Java程序員之最近兩周的面試總結:

匆匆那年之Java程序員之最近兩周的面試總結&#xff1a; (一):匆匆那年之來帝都之初&#xff1a; 還記得那是2011年的冬天&#xff0c;我們一行20多個同學一起來到了這個一直向往的城市首都&#xff0c;剛到北京是凌晨4點30&#xff0c;負責送我們的老師 已經安排好了我們的住處…

Exception in thread main com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport e

摘要&#xff1a;在調用webservice客戶端代碼的時候報如下錯誤 Invoking reportLossByRdid... Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.UnknownHostException: opacat com.sun.xml.in…

org.springframework.http.converter.HttpMessageNotWritableException:

摘要&#xff1a;在使用SpringHibernate搭建RESTful API時&#xff0c;在Hibernate查詢出數據實體類使用jackson序列化為json時&#xff0c;返回頁面的時候報如下錯誤&#xff1a; 一&#xff1a;錯誤信息&#xff1a; HTTP Status 500 - Could not write JSON: No serializer …

Hessian Binary Web Service Protocol遠程接口調用入門

摘要&#xff1a;Hessian是一個輕量級的remoting onhttp工具&#xff0c;使用簡單的方法提供了RMI的功能. 相比WebService&#xff0c;Hessian更簡單、快捷。采用的是二進制RPC協議&#xff0c;因為采用的是二進制協議&#xff0c;所以它很適合于發送二進制數據。 hessian類似于…

Windows+Nginx+Tomcat搭建負載均衡和集群環境同時實現session共享(一)

摘要&#xff1a;隨著網站的訪問量越來越多&#xff0c;所以就考慮給網站增加服務器了&#xff0c;現在比較流行的做法就是給網站做集群環境&#xff0c;下面我把我做的過程記錄一下&#xff0c;方便日后查看&#xff0c;同時也希望可以幫助到有需要的朋友&#xff01; 一&…

Android開發中調用Spring CXF整合發布的WebService接口為什么拋出異常錯誤?

摘要&#xff1a;最近在協助同事搞Android調用WebService接口&#xff0c;再測試的過程中發現老師報錯&#xff0c;經過baidu&#xff0c;google&#xff0c;終于解決了&#xff0c;現在記錄一下&#xff1a; 一&#xff1a;錯誤信息&#xff1a; 2015-10-28 18:50:39 org.apac…

Eclipse,MyEclipse 安裝SVN插件

摘要&#xff1a;MyEclipse10.5安裝SVN插件最簡單的方式&#xff1a; 一&#xff1a;先到SVN官網下載對應版本的SVN插件包&#xff0c;我這里下載的site-1.10.10版本 下載地址&#xff1a;http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID2240 二&#xf…

MyEclipse 10.5 安裝SVN插件

摘要&#xff1a;MyEclipse10.5安裝SVN插件最簡單的方式&#xff1a; 一&#xff1a;先到SVN官網下載對應版本的SVN插件包&#xff0c;我這里下載的site-1.10.10版本 下載地址&#xff1a;http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID2240 二&#xf…

PHP獲取服務器端的相關信息

摘要&#xff1a;PHP獲取服務端端的相關信息 一&#xff1a;代碼&#xff1a; <!DOCTYPE html> <html> <head><title>第一個PHP程序(獲取服務器信息)</title><meta http-equiv"content-type" content"text/html"; charse…

log4j 標準配置模板:

摘要&#xff1a;log4j在開發中是少不了的&#xff0c;下面貼上我的log4j的配置&#xff0c;該配置文件實現的結果是&#xff0c;每天會生成一個日子文件到指定的目錄下&#xff0c;這樣方便我們隨時查看日志信息&#xff01; log4j.propertieslog4j.rootLoggerINFO,CONSOLE,A …

Sql Server 2005 分頁

摘要&#xff1a;Sql Server 分頁查詢sql! Sql Server 2005分頁查詢數據&#xff0c;適用于手機端和服務器端交互 一&#xff1a;Dao代碼&#xff1a; /*** 分頁查詢研訊分類下的新聞列表*/Overridepublic List<TblNews> getListByYunXunNewId(int cId, int start, int…

Spring+Hibernate+SpringMVC+MySql實現配置多個數據源!

摘要&#xff1a;在日常的工作中&#xff0c;很多時候我們進行項目開發的時候&#xff0c;一個項目有可能不止用到一個數據源&#xff0c;為了提高數據庫的水平伸縮性&#xff0c;需要對多個數據庫實例進行管理&#xff0c;需要配置多數據源! 一&#xff1a;代碼截圖&#xff…

Java之Base64實現文件和字符串之間的轉換

摘要&#xff1a;Java通過Base64加密解密實現文件和字符串之間的轉換&#xff01; Base64.java package com.qdexam.util;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputS…

app中使用用戶名/郵箱/手機號登錄的思路分析

摘要&#xff1a;app中使用用戶名/郵箱/手機號登錄的思路分析 1.客戶端 客戶端需要傳遞2個參數 account 代表&#xff1a;用戶名/郵箱/手機號 password 代表&#xff1a;密碼這里問題來了&#xff0c;那么如何判斷識別用戶輸入的是用戶名還是郵箱&#xff0c;還是手機號就需要…

java實現ListObject轉List實體類,java實現Object轉對象,java實現Object轉實體類

摘要&#xff1a;在java開發中&#xff0c;我們常常會遇到Object轉對象的情況&#xff0c;最近我就遇到了這個問題&#xff0c;現在記錄一下&#xff0c;方便日后自己查看復習&#xff01; 一&#xff1a;查詢Object類型的集合對象的方法如下&#xff1a; List topicList top…

MySql實現分頁查詢的SQL,mysql實現分頁查詢的sql語句

摘要&#xff1a;MySql數據庫實現分頁查詢的SQL語句寫法&#xff01; 一&#xff1a;分頁需求&#xff1a; 客戶端通過傳遞start(頁碼)&#xff0c;limit(每頁顯示的條數)兩個參數去分頁查詢數據庫表中的數據&#xff0c;那我們知道MySql數據庫提供了分頁的函數limit m,n&…

CentOS下安裝Memcached,Linux下安裝Memcached,centos下安裝memcached,linux下安裝memcached...

摘要&#xff1a;最近在看《大型分布式網站架構設計與實踐》這本書&#xff0c;把其中的學習過程記錄一下&#xff0c;以便日后復習。 一&#xff1a;Memcached簡單介紹和描述&#xff1a; Memcached 是一個高性能的分布式內存對象緩存系統&#xff0c;用于動態Web應用以減輕數…

Spring,ehcache整合報錯

摘要&#xff1a;在做Spring整合ehcache配置的時候出現了下面的錯誤&#xff0c;提示如下&#xff1a;java.lang.ClassNotFoundException: org.springframework.cache.ehcache.EhCacheManagerFactoryBean&#xff0c;經過檢查發現是因為org.springframework.cache.ehcache.EhCa…

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/BasePoolableObjectFactory

摘要&#xff1a;異常信息解決過程記錄 一&#xff1a;異常信息&#xff1a; Caused by: java.lang.NoClassDefFoundError: org/apache/commons/pool/BasePoolableObjectFactoryat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(Cla…

一個微信公眾號接入另一個微信公眾號的內容

摘要&#xff1a;近日來了這么一個需求&#xff0c;就是客戶想在他們的微信公眾號里面直接接入我們微信公眾號的文章&#xff0c;于是我便開始baidu&#xff0c;google&#xff0c;最后發現了一個新的搜索引擎&#xff1a;“搜狗微信搜索”&#xff0c;該搜索引擎是最近才上線的…