01. Maven 工具的安裝以及項(xiàng)目的創(chuàng)建

01. Maven 工具的安裝以及項(xiàng)目的創(chuàng)建

1朋鞍、Maven簡(jiǎn)介

  • Maven是 Apache軟件基金會(huì)的一個(gè)開(kāi)源項(xiàng)目
  • 它用來(lái)幫助開(kāi)發(fā)者管理項(xiàng)目中的jar,以及jar之間的依賴(lài)關(guān)系
  • 完成項(xiàng)目的編譯、測(cè)試、打包和發(fā)布等工作

Pom(Project Object Model 項(xiàng)目對(duì)象模型)

  • Maven 管理的項(xiàng)目的根目錄下都有一個(gè) pom.xml 文件
  • pom.xml 文件指示 Maven 如何工作
  • pom.xml 文件中配置項(xiàng)目基本信息以及項(xiàng)目構(gòu)建信息等。比如:項(xiàng)目坐標(biāo)猴仑、項(xiàng)目依賴(lài)的 jar许溅、插件、編譯選項(xiàng)等诽里。
  • 一旦在 pom.xml 文件中配置了所依賴(lài)的 jar,Maven 會(huì)自動(dòng)從構(gòu)件倉(cāng)庫(kù)中下載相應(yīng)的構(gòu)件飞蛹。

2谤狡、項(xiàng)目坐標(biāo)

在 Maven 中,將每個(gè)項(xiàng)目最終生成的文件稱(chēng)為 artifact(構(gòu)件)卧檐,它可以是 jar 文件墓懂,也可以是 war 文件。

groupId霉囚、artifactId捕仔、packaging、version 的組合被稱(chēng)為項(xiàng)目的坐標(biāo)盈罐,它們形成了項(xiàng)目的唯一標(biāo)識(shí)逻澳,Maven

通過(guò)坐標(biāo)來(lái)精確定位構(gòu)件。其中 groupId暖呕、artifactId斜做、version 是必須的,且這三項(xiàng)的值必須唯一湾揽,packaging是可選的(默認(rèn)為 jar)瓤逼。

組成元素:

  • groupId 組Id

  • artifactId 組件Id

  • packaging 包類(lèi)型

  • version 版本

在項(xiàng)目中使用jar笼吟,需要在pom.xml 文件配置jar的坐標(biāo),maven 首先去本地倉(cāng)庫(kù)找霸旗,如果找不到就會(huì)去中央倉(cāng)庫(kù)找贷帮。

3、倉(cāng)庫(kù)

中央倉(cāng)庫(kù)全球共享,先將jar從中央倉(cāng)庫(kù)下載到本地倉(cāng)庫(kù),然后在項(xiàng)目中引用本地倉(cāng)庫(kù)的jar.

本地倉(cāng)庫(kù)就是本地的倉(cāng)庫(kù)诱告,里面存放著jar包撵枢。

4、Maven 開(kāi)發(fā)環(huán)境搭建

4.1 下載maven服務(wù)器

maven官網(wǎng):

http:// maven.apache. org

點(diǎn)擊download進(jìn)行下載如下圖

4.2 配置maven

(1)將下載二進(jìn)制的apache-maven-3.5.2-bin.zip進(jìn)行解壓精居,然后在系統(tǒng)環(huán)境中配置環(huán)境變量锄禽,在path中配置到bin目錄,配置成功后輸入命令mvn -version

(2)配置settings.xml文件

在maven的服務(wù)器解壓的文件中找到conf文件夾下的settings.xml文件進(jìn)行修改:

1)修改本地倉(cāng)庫(kù)位置

現(xiàn)在自己磁盤(pán)中創(chuàng)建一個(gè)文件夾mavenRepository靴姿,我是在D:\mavenRepository

然后在settings.xml文件中找到setting標(biāo)簽沃但,把里面的localRepository中的路徑改為D:\mavenRepository,并取消注釋佛吓。

<!--配置本地倉(cāng)庫(kù)位置宵晚,從中央倉(cāng)庫(kù)下載的jar包都 會(huì)存儲(chǔ)到這個(gè)目錄-->
  <localRepository>D:\mavenRepository</localRepository>

2)修改為阿里云的maven鏡像倉(cāng)庫(kù)

找到mirror標(biāo)簽,進(jìn)行修改

  <!--配置中央鏡像倉(cāng)庫(kù)  阿里云服務(wù)器地址  下載速度快 -->
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
   </mirror>

3)修改jdk版本信息

找到profiles標(biāo)簽维雇,添加下面代碼淤刃,如下圖:

    <!--配置jdk版本 -->
        <profile>    
            <id>jdk-1.8</id>    
             <activation>    
                <activeByDefault>true</activeByDefault>    
                <jdk>1.8</jdk>    
              </activation>    
            <properties>    
                <maven.compiler.source>1.8</maven.compiler.source>    
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> 
            </properties>    
        </profile>

到此為止,settings.xml文件就配置完成了Vㄐ汀R菁帧!

(3)在eclipse中配置maven插件

  • 在eclipse中打開(kāi)Window-> Preferences->Maven
  • 在Installations 中添加apache-maven-3.5.4安裝根目錄
  • 在User Settings中唁影,配置settings.xml文件路徑

到此為止,Maven就配置完成了5嗝>萆颉!

5饺蔑、創(chuàng)建Maven工程

(1)

(2)

(3)

(4)第一次創(chuàng)建項(xiàng)目锌介,需要從maven倉(cāng)庫(kù)下載jar包

(5)進(jìn)來(lái)之后如果會(huì)報(bào)錯(cuò),需要點(diǎn)擊這個(gè)

6猾警、如何在Maven中導(dǎo)入jar包

6.1 導(dǎo)入中央倉(cāng)庫(kù)包

(1)在Maven倉(cāng)庫(kù)官網(wǎng)上孔祸,找到使用的jar的倉(cāng)庫(kù)文件路徑

Maven倉(cāng)庫(kù)地址:https://mvnrepository.com/

(2)直接搜索 需要的jar包名,比如:jstl

(3)找到想要的版本

(4)復(fù)制倉(cāng)庫(kù)地址

(5)粘貼到項(xiàng)目中pom.xml文件的dependencies標(biāo)簽中发皿,如果沒(méi)有創(chuàng)建dependencies標(biāo)簽崔慧。粘貼后保存,eclipse會(huì)自動(dòng)從倉(cāng)庫(kù)中下載jar包到本地倉(cāng)庫(kù)穴墅。

<dependencies>
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
 </dependencies>

(6)導(dǎo)入servlet-api包

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <!-- scope: 默認(rèn)值是compile 惶室,當(dāng)項(xiàng)目最終打包時(shí)温自,會(huì)將jar包拷貝到項(xiàng)目的lib目錄中;
                          provided,服務(wù)器中或者JDK中已經(jīng)包含了這些jar包皇钞,只在本地編譯時(shí)需要悼泌,所以打包的時(shí)候不會(huì)被拷貝 
         -->
        <scope>provided</scope>
    </dependency>

各個(gè)子元素功能解釋?zhuān)?/p>

<groupId>,<artifactId>和<version>:依賴(lài)項(xiàng)的基本坐標(biāo)

<type>:依賴(lài)項(xiàng)的 packaging 類(lèi)型,默認(rèn)是 jar;

<scope>:依賴(lài)項(xiàng)的作用范圍夹界,默認(rèn)是 compile馆里。各個(gè)取值及含義如下:

compile:編譯時(shí)和運(yùn)行時(shí)依賴(lài)。如果你的項(xiàng)目最終打包為 war 包可柿,則該依賴(lài)包會(huì)被拷貝到 war 包中的 lib 目錄中鸠踪。

provided:編譯項(xiàng)目主代碼和測(cè)試代碼時(shí)使用此依賴(lài)項(xiàng),運(yùn)行時(shí)由 jre 或 web 容器提供趾痘。如果你的項(xiàng)目最終打包為 war 包慢哈,則該 jar 包不會(huì)被打包。

6.2 導(dǎo)入本地包

我們除了可以導(dǎo)入人家的中央倉(cāng)庫(kù)包永票,也可以把我們自己寫(xiě)的java程序打包進(jìn)行導(dǎo)入卵贱,作為這個(gè)項(xiàng)目的一個(gè)工具包。

導(dǎo)入方式和上述方式一致:

    <dependency>
        <groupId>com.company</groupId>
        <artifactId>MyUtil-0.0.1-SNAPSHOT</artifactId>
        <version>1.0.0</version>
    </dependency>

7侣集、使用maven打包

(1)右擊 pom.xml文件或者 右擊項(xiàng)目键俱,選擇 Run as

(2)先選擇Maven clear清除上次打包的版本

(3)再選擇Maven install進(jìn)行打包,打包好的jar文件會(huì)存放到本地倉(cāng)庫(kù)中世分。

(4)更新倉(cāng)庫(kù):項(xiàng)目右鍵->Maven->Update Project…

8编振、使用log4j

log4j是 apche 提供的一款日志組件

8.1 如何使用

(1)導(dǎo)入jar包

    <!-- log4j -->
      <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.17</version>
      </dependency>

(2)導(dǎo)入 log4j 的配置文件 log4j.properties,源碼如下臭埋,沒(méi)有的可以手動(dòng)創(chuàng)建

log4j.rootLogger = debug,stdout,D
#System out Console
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n

#System out File
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ] -[%l] %m%n

(3)在之前任意使用System.out.println();的地方現(xiàn)在都可以使用 log4j 代替踪央。

import org.apache.log4j.Logger;
public class Demo {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(Demo.class);  
        logger.debug("日志已經(jīng)調(diào)試好");
    }
}

8.2 日志級(jí)別

每個(gè)Logger都被了一個(gè)日志級(jí)別(log level),用來(lái)控制日志信息的輸出瓢阴。日志級(jí)別從高到低分為:
A:off 最高等級(jí)畅蹂,用于關(guān)閉所有日志記錄。
B:fatal 指出每個(gè)嚴(yán)重的錯(cuò)誤事件將會(huì)導(dǎo)致應(yīng)用程序的退出荣恐。
C:error 指出雖然發(fā)生錯(cuò)誤事件液斜,但仍然不影響系統(tǒng)的繼續(xù)運(yùn)行。
D:warm 表明會(huì)出現(xiàn)潛在的錯(cuò)誤情形叠穆。
E:info 一般和在粗粒度級(jí)別上少漆,強(qiáng)調(diào)應(yīng)用程序的運(yùn)行全程。
F:debug 一般用于細(xì)粒度級(jí)別上硼被,對(duì)調(diào)試應(yīng)用程序非常有幫助示损。
G:all 最低等級(jí),用于打開(kāi)所有日志記錄嚷硫。

上面這些級(jí)別是定義在org.apache.log4j.Level類(lèi)中屎媳。Log4j只建議使用4個(gè)級(jí)別夺溢,優(yōu)先級(jí)從高到低分別是error,warn,info和debug。通過(guò)使用日志級(jí)別烛谊,可以控制應(yīng)用程序中相應(yīng)級(jí)別日志信息的輸出风响。例如,如果使用b了info級(jí)別丹禀,則應(yīng)用程序中所有低于info級(jí)別的日志信息(如debug)將不會(huì)被打印出來(lái)状勤。

Log4J采用類(lèi)似C語(yǔ)言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:

%m 輸出代碼中指定的消息
%p 輸出優(yōu)先級(jí)双泪,即DEBUG持搜,INFO,WARN焙矛,ERROR葫盼,F(xiàn)ATAL  
%r 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)  
%c 輸出所屬的類(lèi)目,通常就是所在類(lèi)的全名  
%t 輸出產(chǎn)生該日志事件的線程名  
%n 輸出一個(gè)回車(chē)換行符村斟,Windows平臺(tái)為“rn”贫导,Unix平臺(tái)為“n”  
%d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601蟆盹,也可以在其后指定格式孩灯,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類(lèi)似:2002年10月18日 22:10:28逾滥,921  
%l 輸出日志事件的發(fā)生位置峰档,包括類(lèi)目名、發(fā)生的線程寨昙,以及在代碼中的行數(shù)讥巡。舉例:Testlog4.main(TestLog4.java:10)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市舔哪,隨后出現(xiàn)的幾起案子欢顷,更是在濱河造成了極大的恐慌,老刑警劉巖尸红,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吱涉,死亡現(xiàn)場(chǎng)離奇詭異刹泄,居然都是意外死亡外里,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)特石,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盅蝗,“玉大人,你說(shuō)我怎么就攤上這事姆蘸《漳” “怎么了芙委?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狂秦。 經(jīng)常有香客問(wèn)我灌侣,道長(zhǎng),這世上最難降的妖魔是什么裂问? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任侧啼,我火速辦了婚禮,結(jié)果婚禮上堪簿,老公的妹妹穿的比我還像新娘痊乾。我一直安慰自己,他們只是感情好椭更,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布哪审。 她就那樣靜靜地躺著,像睡著了一般虑瀑。 火紅的嫁衣襯著肌膚如雪湿滓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天缴川,我揣著相機(jī)與錄音茉稠,去河邊找鬼。 笑死把夸,一個(gè)胖子當(dāng)著我的面吹牛而线,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恋日,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼膀篮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了岂膳?” 一聲冷哼從身側(cè)響起誓竿,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谈截,沒(méi)想到半個(gè)月后筷屡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡簸喂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年毙死,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喻鳄。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扼倘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出除呵,到底是詐尸還是另有隱情再菊,我是刑警寧澤爪喘,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站纠拔,受9級(jí)特大地震影響秉剑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稠诲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一秃症、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吕粹,春花似錦种柑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至稳其,卻和暖如春驶赏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背既鞠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工煤傍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘱蛋。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓蚯姆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親洒敏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子龄恋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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