創(chuàng)建自己的Maven骨架叭爱,一次創(chuàng)建撮躁,簡單永遠。

Maven

?1.Maven的簡介

??Maven是項目進行模型抽象买雾,充分運用面向?qū)ο笏枷氚崖ㄟ^一小段描述信息來管理項目的構(gòu)建,報告和文檔的軟件項目管理工具漓穿。Maven除了以程序構(gòu)建能力為特色之外嗤军,還提供高級項目管理工具。

?2.Maven的主要作用

??1.對第三方j(luò)ar包的統(tǒng)一管理器净。意思其實就是通過本地倉庫或者是遠程倉庫更或者是中央倉庫進行依賴管理型雳,省去了導入jar包的操作。不過一般我們在配置Maven時會選擇阿里的遠程倉庫山害,不會去連接中央倉庫,因為太慢了沿量,而且阿里不僅擁有中央倉庫的所有jar包而且開源了自身許多有用的jar包浪慌,如數(shù)據(jù)庫連接池jar包Druid(德魯伊)。
??2.將項目分模塊構(gòu)建朴则,提高開發(fā)效率权纤。意思就是說使用Maven時,其構(gòu)建項目時乌妒,會將包分好汹想,方便工作人員協(xié)同開發(fā),提高效率撤蚊。
??3.Maven提供一套對項目生命周期管理的標準古掏。意思是說,Maven為項目提供了許多有關(guān)jar包的作用域侦啸,作用范圍槽唾,類的生命周期,運行范圍光涂。以及項目的編譯庞萍,部署等都提供了很好的接口,只要配置下就好了忘闻。減少了開發(fā)人員思考這些無關(guān)緊要的東西钝计,只要遵循Maven的標準就可以了。

?3.Maven下載后的配置

??Maven不是下載好了就能夠使用了,需要更改其一些配置方便我們開發(fā)私恬。首先债沮,打開Maven下conf文件夾下settings.xml文件,更改這個配置文件践付。在大約55行處有一個<localRepository>標簽秦士,將其更改成自己想要的目錄,來存放Maven將來要下載的jar包目錄永高。我的如下:

<localRepository>D:\apache-maven-3.3.9\repository</localRepository>

更改完找到大約150行左右有一個<mirrors>標簽隧土,在這個標簽內(nèi)添加如下代碼,以便到時本地倉庫沒有相關(guān)jar包時命爬,可以到阿里的遠程倉庫下載相關(guān)jar包曹傀,方便,快速饲宛,減少下載時間皆愉。(如果不更改,默認使用Maven的中央倉庫下載很慢)艇抠。添加的代碼如下:

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

這樣就配置完成了幕庐,就可以很方便的使用了。當然家淤,方便使用我們要在什么地方使用呢异剥,Maven是構(gòu)建項目的,所以一般他需要和開發(fā)使用的IDE集成起來使用絮重,我使用的是IDEA冤寿,我簡單說下在IDEA中如何使用MAVEN。

?4.IDEA中的Maven

??在IDEA中青伤,使用Maven很簡單督怜,首先IDEA本身自帶了Maven,不過其自帶的Maven較為垃圾狠角,不適合開發(fā)号杠,所以一般都關(guān)聯(lián)自己的Maven,配置很簡單擎厢。點擊Files->Settings在搜索框中輸入Maven究流,就可以看到Maven選項,點擊Maven選項



在右側(cè)關(guān)聯(lián)上自己的Maven动遭,如圖是我自己的



注意:只需在選擇文件處找到自己的Maven就可以了芬探,不用其他操作,將Override勾選上即可厘惦。然后Apply和OK就完事了偷仿。

?5.IDEA中創(chuàng)建Maven項目

??1.IDEA中創(chuàng)建JavaSe的Maven項目哩簿。這個需求一般來說有點不可能,一般能接觸到Maven的各位一般都已經(jīng)接觸Web了酝静,對于這個根本沒需求节榜,不過這個是給小白看的,高手請繞過后面部分的Web項目構(gòu)建别智。首先宗苍,在IDEA中,project對應(yīng)Eclipse的工作空間薄榛,module對應(yīng)Eclipse的project讳窟。所以在idea中的一個project中創(chuàng)建一個module,并選擇Maven敞恋,在右邊查找到紅線所示的quickstart丽啡。如圖:


JavaSe的Maven項目構(gòu)建

點擊下一步,如下圖



Groupid一般是公司域名的倒寫硬猫,這里我只是用自己名字的縮寫模仿了下补箍。至于Artifactid一般是項目名稱。當然啸蜜,進入公司后具體由公司來決定坑雅,不用你操心,這里寫你的項目名稱就ok衬横。還有一點霞丧,在上面還有兩個選項,這個一般你自己寫項目用不到冕香,如果不是默認的none而是其他的請改掉選擇none。寫好點擊下一步

這里一般正常就不用改后豫,看下是否是自己module名稱悉尾。如果是請點擊下一步,如果不是請查看前面步驟挫酿,如果前面沒問題還是這樣构眯,就自己修改。然后點擊finish就可以了早龟。



出現(xiàn)這個表示創(chuàng)建成功了惫霸。項目結(jié)構(gòu)如下圖
項目結(jié)構(gòu)

JavaSe無非就是導入一些基礎(chǔ)的jar包,如jstl標簽庫葱弟,數(shù)據(jù)庫連接池壹店,數(shù)據(jù)庫驅(qū)動,單元測試等等芝加,在pom.xml中導入相關(guān)依賴即可硅卢。

?6.一次創(chuàng)建,永遠簡單

??使用Maven構(gòu)建web項目是一個挺令人煩躁的事情,Maven自身帶的骨架還是要進行修改将塑,所以最好還是自己弄個骨架脉顿,以后永遠方便。首先点寥,構(gòu)建骨架還是要先構(gòu)建Maven的web項目艾疟。同樣在idea中的一個project中創(chuàng)建一個module,并選擇Maven敢辩,在右邊查找到紅線所示的webapp蔽莱。



點擊next



Groupid一般是公司域名的倒寫,這里我只是用自己名字的縮寫模仿了下责鳍。至于Artifactid一般是項目名稱碾褂。當然,進入公司后具體由公司來決定历葛,不用你操心正塌,這里寫你的項目名稱就ok。還有一點恤溶,在上面還有兩個選項乓诽,這個一般你自己寫項目用不到,如果不是默認的none而是其他的請改掉選擇none咒程。然后點擊下一步鸠天,如圖

看一下是否是自己的Maven,是就直接下一步帐姻。不是請看前面的配置環(huán)節(jié)稠集,如果進行了前面的配置操作還不是自己的Maven,就自己手動選擇吧饥瓷。



看下是自己項目名稱不剥纷,是就下一步,不是請修改呢铆。然后finish晦鞋,看是否成功

成功后,請看項目結(jié)構(gòu)圖

這個目錄棺克,并沒有生成好悠垛,所以需要修改下。在src下添加test文件夾娜谊,
在main下添加java文件夾和resources文件夾确买,同樣,在test文件下一樣添加java和resources文件夾。添加好后如下圖

添加完后,給這幾個文件夾添加如下屬性,右擊main下的java文件夾嗽测,選擇make directory as選項撑帖。



然后對應(yīng)選擇蓉坎,main下的java選擇藍色的sources root選項,其他三個對應(yīng)選胡嘿,結(jié)果如下圖蛉艾。
到這里并不能使之后完成的骨架生成這些東西,因為里面沒代碼衷敌,沒有占位置勿侯,所以到時候會消失,所以給其建一些包并且里面有類缴罗。如下兩個圖


這樣就搭好了骨架助琐,為了能生成更好的骨架,這里呢選擇了修改一些東西面氓,這些操作不是必須兵钮。首先為了能支持servlet的注解開發(fā),這里修改了web.xml如代碼,剩下的沒改舌界。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>

然后為了減少以后的操作掘譬,給pom.xml添加常用的依賴添加到骨架中,順便將骨架生成的插件集合進來呻拌,打開pom.xml,在plugins中添加插件代碼

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

然后添加的常用依賴代碼葱轩,這個根據(jù)自己的情況選擇。

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--mysql驅(qū)動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
        <!-- dbutils -->
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.6</version>
        </dependency>

        <!-- c3p0 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!--jsonlib的依賴-->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>
        <!-- redis的依賴 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.2</version>
        </dependency>
        <!-- dom4j -->
        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <!-- jaxen -->
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1-beta-6</version>
        </dependency>
        <!--servlet的api-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--commons io 依賴-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.1</version>
        </dependency>

好了這些操作完成藐握,可以使用指令生成骨架了靴拱。點擊如下圖



然后輸入指令:
這里我將三個用到的指令給出來

archetype:create-from-project 創(chuàng)建骨架來自工程
install
archetype:crawl 

第一個先輸入如下指令,點擊execute



成功會輸出如下圖



接著如下圖操作猾普,這部的意思是讓Maven下載骨架

成功如下圖



一樣第三部輸入如下指令缭嫡,如圖點擊execute

成功如下圖:

好了所有操作完成,現(xiàn)在我們在Maven中創(chuàng)建我們的骨架
首先我們找到我們骨架的坐標抬闷,我們自己創(chuàng)建的骨架在Maven的本地庫中,我的目錄如下,就是Maven本地倉庫加你創(chuàng)建骨架時的域名加項目名+archetype

D:\apache-maven-3.3.9\repository\com\wuhaitao\project-archetype

打開如下圖



是個坐標耕突,然后打開idea在project中新建一個module笤成,如圖



輸入好坐標后點擊ok就生成了咱們的骨架如下圖

然后點擊咱們的骨架,點擊next眷茁,接下來就是上面創(chuàng)建web的Maven項目了炕泳,向上面所寫的那樣建就好。



在點擊finish后
然后就可以了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末上祈,一起剝皮案震驚了整個濱河市培遵,隨后出現(xiàn)的幾起案子浙芙,更是在濱河造成了極大的恐慌,老刑警劉巖籽腕,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗡呼,死亡現(xiàn)場離奇詭異,居然都是意外死亡皇耗,警方通過查閱死者的電腦和手機南窗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郎楼,“玉大人万伤,你說我怎么就攤上這事∥卦” “怎么了敌买?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阶界。 經(jīng)常有香客問我虹钮,道長,這世上最難降的妖魔是什么荐操? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任芜抒,我火速辦了婚禮,結(jié)果婚禮上托启,老公的妹妹穿的比我還像新娘宅倒。我一直安慰自己,他們只是感情好屯耸,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布拐迁。 她就那樣靜靜地躺著,像睡著了一般疗绣。 火紅的嫁衣襯著肌膚如雪线召。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天多矮,我揣著相機與錄音缓淹,去河邊找鬼。 笑死塔逃,一個胖子當著我的面吹牛讯壶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾盗,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伏蚊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了格粪?” 一聲冷哼從身側(cè)響起躏吊,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氛改,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后比伏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體胜卤,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年凳怨,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑰艘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肤舞,死狀恐怖紫新,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情李剖,我是刑警寧澤芒率,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站篙顺,受9級特大地震影響偶芍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜德玫,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一匪蟀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宰僧,春花似錦材彪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至造成,卻和暖如春显熏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晒屎。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工喘蟆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鼓鲁。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓履肃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坐桩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第1章 Maven 介紹 什么是 Maven 什么是 Maven Maven 的正確發(fā)音是[?mev?n]封锉,而不是...
    強某某閱讀 2,382評論 0 25
  • Maven的基本了解 什么是Maven绵跷? Maven就是Apache下的一個開源項目膘螟。它是用純java開發(fā)的。是一...
    Bcome閱讀 2,820評論 0 7
  • 逅弈 轉(zhuǎn)載請注明原創(chuàng)出處碾局,謝謝荆残! 以前的日子 以前我們寫代碼時,jar包都默認放在一個叫 /lib 的目錄下净当,然后...
    逅弈閱讀 2,887評論 3 45
  • 什么是Maven Maven是一個采用純Java編寫的開源項目管理工具, Maven采用了一種被稱之為Projec...
    Java3y閱讀 751評論 0 16
  • 我覺得我是一個幸福的人内斯。 我老爸不是王健林 吳尊 ,我家里沒有錢像啼,我也沒有顏值爆表俘闯,我沒有優(yōu)異的成績,我不是獨生子...
    ok3閱讀 133評論 0 0