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)