1.maven為我們提供了一個(gè)archetype插件,用于創(chuàng)建符合maven規(guī)范的目錄骨架。
maven規(guī)定是:
---src
---main
---java
---主代碼
---test
---java
---測(cè)試代碼
命令:
mvn -v 查看maven版本
compile 編譯
test 測(cè)試
package 打包
clean 刪除target
install 安裝jar包到本地倉(cāng)庫(kù)中
創(chuàng)建目錄的兩種方式:
1.archetype:generate 按照提示進(jìn)行選擇
2.artchetype:generate -DgroupId=組織名,公司網(wǎng)址的反寫(xiě)+項(xiàng)目名
-DartifactId=項(xiàng)目名-模塊名
-Dversion=版本號(hào)
-Dpackage=代碼所存在的包名
3.在maven世界中任何一個(gè)依賴、插件、項(xiàng)目構(gòu)建的輸出都可以被稱為構(gòu)建,構(gòu)
件通過(guò)坐標(biāo)作為其唯一標(biāo)識(shí)。
坐標(biāo)
構(gòu)件
倉(cāng)庫(kù)
本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)
在maven的安裝目錄中---lib---maven-model-builder-3.3.3.jar中有pom.xml
鏡像倉(cāng)庫(kù)
在maven的安裝目錄中--config--settings.xml--mirrors標(biāo)簽(145行)
<mirror>
<!--鏡像倉(cāng)庫(kù)的ID-->
<id>maven.net.cn</id>
<!--為哪個(gè)倉(cāng)庫(kù)配置鏡像,中央倉(cāng)庫(kù)名為central,也可以使用通配符*-->
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content/groups/public</url>
</mirror>
更改倉(cāng)庫(kù)的位置
找到settings.xml---<localRepository>標(biāo)簽(注意路徑是/)
<localRepository>J:/test/repository</localRepository
4.在Eclipse中使用maven(如果是4.0以上或者M(jìn)yeclipse就不必安裝插件)
1.找到Eclipse的dropins文件夾,把maven插件放入即可
2.修改Eclipse的jvm:找到eclipse.ini文件,打開(kāi)添加-vm:c:\java...\javaw.exe
3.修改Eclipse中jre的配置
4.修改maven中的路徑設(shè)置
1.一個(gè)完整的項(xiàng)目構(gòu)建過(guò)程包括:
清理、編譯、測(cè)試、打包、集成測(cè)試、驗(yàn)證、部署
2.maven生命周期:
clean 清理項(xiàng)目,分為三個(gè)階段
pre-clean 執(zhí)行清理前的工作
clean 清理上一次構(gòu)建生成的所有文件
post-clean 執(zhí)行清理后的文件
default 構(gòu)建項(xiàng)目(最核心)包括:
compile、test、package install
site 生成項(xiàng)目站點(diǎn)包括以下階段:
pre-site 在生成項(xiàng)目站點(diǎn)前要完成的工作
site 生成項(xiàng)目的站點(diǎn)文檔
post-site 在生成項(xiàng)目站點(diǎn)后要完成的工作
site-deploy 發(fā)布生成的站點(diǎn)到服務(wù)器上
3.maven支持的插件簡(jiǎn)單介紹:(https://maven.apache.org/plugins/index.html)
source 可以將項(xiàng)目的源碼進(jìn)行打包
舉例:在pom.xml中配置
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<!--綁定source命令到packge命令生命周期中,
執(zhí)行package命令時(shí),自動(dòng)執(zhí)行source命令-->
<executions>
<execution>
<phase>package</phase>
<!--運(yùn)行的目標(biāo)-->
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
然后執(zhí)行 clean package命令
5.pom.xml介紹
<modelVersion>4.0.0</modelVersion>是一個(gè)固定的版本,是一個(gè)必須的元素,指定了當(dāng)前pom的版本
坐標(biāo)的信息
<!--主項(xiàng)目的標(biāo)識(shí),用來(lái)定義當(dāng)前maven屬于哪個(gè)實(shí)際的項(xiàng)目的,以反寫(xiě)的公司網(wǎng)址+項(xiàng)目名-->
<groupId>com.hbtt.test.a</groupId>
<!--表示一個(gè)模塊的標(biāo)識(shí),實(shí)際項(xiàng)目中的一個(gè)模塊,一般使用時(shí)間的項(xiàng)目名+模塊名-->
<artifactId>haha</artifactId>
<!--表示當(dāng)前項(xiàng)目的版本號(hào)-->
<!--0.0.1
第一個(gè)0表示大版本號(hào)
第二個(gè)0表示分支版本號(hào)
第三個(gè)0表示小版本號(hào)
snapshot 快照版本
alpha 內(nèi)部測(cè)試
beta 公測(cè)
Release 穩(wěn)定
GA 正式發(fā)布
-->
<version>0.0.1-SNAPSHOT</version>
<!--maven項(xiàng)目的打包方式-->
<!--
默認(rèn)是jar
war zip pom
-->
<packaging>jar</packaging>
<!--項(xiàng)目的描述名,在產(chǎn)生項(xiàng)目文檔時(shí)使用-->
<name>haha</name>
<!--項(xiàng)目地址-->
<url>http://maven.apache.org</url>
<!--項(xiàng)目描述-->
<description></description>
<!--開(kāi)發(fā)人員列表-->
<developers></developers>
<!--許可證信息,比如用到開(kāi)源框架時(shí)-->
<licenses></licenses>
<!--組織信息-->
<organization></organization>
<!--依賴信息-->
<dependencies>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!--依賴的范圍,test表示junit只在測(cè)試依賴范圍內(nèi)有用,在主代碼中會(huì)報(bào)錯(cuò)
maven提供了三種classpath:1.編譯2測(cè)試3運(yùn)行
scope有六種級(jí)別:
1.compile:默認(rèn)的范圍,編譯測(cè)試運(yùn)行都有效
2.provided:在編譯和測(cè)試時(shí)有效,比如servlet API
3.runtime:在測(cè)試和運(yùn)行時(shí)有效 比如JDBC驅(qū)動(dòng),編譯時(shí)只需要jdbc主代碼提供的API,只有在
測(cè)試和運(yùn)行時(shí)才需要jdbc的實(shí)現(xiàn)代碼
4.test 只在測(cè)試范圍有效
5.system:與本機(jī)系統(tǒng)相關(guān)聯(lián),可移植性差,編譯測(cè)試時(shí)有效,比如引入本地的JAVAHOME可能
會(huì)因?yàn)楦淖兿到y(tǒng),路徑不一致而報(bào)錯(cuò)
不一致
6.import:一個(gè)導(dǎo)入的范圍,只用在<dependencyManagement>標(biāo)簽中表示從其他的
pom中導(dǎo)入dependecy的配置
-->
<scope>test</scope>
<!--設(shè)置依賴是否可選,只有兩個(gè)值true和false,默認(rèn)false,子項(xiàng)目默認(rèn)是繼承的,
如果true,子項(xiàng)目必須顯示的繼承-->
<optional></optional>
<!--排除依賴傳遞列表-->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependencies>
<!--依賴管理,可以包含多個(gè)依賴,但是它不會(huì)被運(yùn)行,引入到實(shí)際的依賴中,這個(gè)標(biāo)簽用于
定義在父模塊中,供子模塊繼承。比如junit放在父模塊中,其他繼承即可-->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!--通常為構(gòu)件行為提供相應(yīng)的支持-->
<build>
<plugins>
<plugin>
groupId ,artifactID version等標(biāo)簽
</plugin>
</plugins>
</build>
<!--通常用于子模塊對(duì)父模塊pom的繼承-->
<parent></parent>
<!--用來(lái)聚合運(yùn)行多個(gè)的maven項(xiàng)目,如果有多個(gè)maven需要編譯,使用此標(biāo)簽,可以指定多個(gè)模塊一起編譯-->
<modules></modules>
6.修復(fù)JDK版本
1.找打maven的settings文件中的profiles標(biāo)簽
2. 按如下格式書(shū)寫(xiě),必須按如下寫(xiě)
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVesion>1.7</maven.compiler.compilerVesion>
</properties>
</profile>
7.用maven構(gòu)件web項(xiàng)目
注意:
1.選擇archetype-webapp選項(xiàng)
2.對(duì)于index報(bào)錯(cuò),添加servlet依賴
3.檢查文件的輸出路徑:build Path-->configure build path-->source選項(xiàng)
4.改成web項(xiàng)目
選擇項(xiàng)目屬性-->maven-->project Facets 中勾選上Dynamic web services選項(xiàng)
5.修改部署時(shí)的默認(rèn)配置:
點(diǎn)擊項(xiàng)目屬性--->選擇Deployment Assembly選項(xiàng)-->刪除掉測(cè)試的文件
6.使用jetty啟動(dòng)web項(xiàng)目:引入jetty插件依賴,然后運(yùn)行時(shí)輸入jetty:run