国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Maven學(xué)習(xí)筆記

2019-11-11 01:23:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

《項(xiàng)目管理利器——maven 》學(xué)習(xí)筆記

Maven的安裝

Maven下載地址 選擇 apache-maven-3.3.9-bin.zip 下載后解壓。 配置環(huán)境變量: 1. 新建環(huán)境變量M2_HOME,值為maven解壓的地址,例如:D:/maven/apache-maven-3.3.9 2. 在Path變量的值后面添加;%M2_HOME%/bin; 驗(yàn)證配置成功:win+r cmd 輸入mvn -v 如果能出現(xiàn)相關(guān)信息則成功。


maven項(xiàng)目目錄結(jié)構(gòu):

src-main -java -package(自定義的包)-test -java -package-resources(存放一些資源文件)

手工編寫(xiě)第一個(gè)maven項(xiàng)目:

創(chuàng)建文件夾及編寫(xiě)文件

maven01(PRoject name) -src -main -java -com/maven/imooc/model/HelloWorld.java -test -java -com/maven/imooc/model/HelloWorldTest.java -pom.xml

HelloWorld.java

package com.imooc.maven01.model;public class HelloWorld { public String sayHello() { return "Hello World!"; }}

HelloWorldTest.java

package com.imooc.maven01.model;import org.junit.*;import org.junit.Assert.*;public class HelloWorldTest { @Test public void testHello() { Assert.assertEquals("Hello World!", new HelloWorld().sayHello()); }}

pom.xml

<?xml version="1.0" encoding="UTF-8"?><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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 包名 --> <groupId>com.imooc.maven01</groupId> <!-- 模塊名 建議使用項(xiàng)目名 --> <artifactId>maven01-model</artifactId> <!-- 版本 --> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies></project>

在cmd中項(xiàng)目目錄下運(yùn)行mvn compile 看到BUILD SUCCESS即運(yùn)行成功 (maven下載慢的話可以看這篇博客解決:傳送門(mén) 然后運(yùn)行mvn test 看到BUILD SUCCESS即運(yùn)行成功 會(huì)在項(xiàng)目根目錄下生成文件夾target 運(yùn)行mvn package


maven常用構(gòu)建命令

mvn -v 查看maven版本。mvn compile 編譯。mvn test 測(cè)試。mvn package 打包。mvn clean 清除maven生成的target目錄。mvn install 將生成的jar安裝到本地倉(cāng)庫(kù)中。

構(gòu)建第二個(gè)maven項(xiàng)目

Speak.java

package com.imooc.maven02.util;import com.imooc.maven01.model.HelloWorld;public class Speak { public String sayHi() { return new HelloWorld().sayHello(); }}

SpeakTest.java

package com.imooc.maven02.util;import org.junit.*;import org.junit.Assert.*;public class SpeakTest { @Test public void testSayHi() { Assert.assertEquals("Hello World!", new Speak().sayHi()); }}

pom.xml

<?xml version="1.0" encoding="UTF-8"?><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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.maven02</groupId> <artifactId>maven02-model02</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>com.imooc.maven01</groupId> <artifactId>maven01-model</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies></project>

在maven01項(xiàng)目目錄下執(zhí)行mvn install 將該項(xiàng)目發(fā)布到本地倉(cāng)庫(kù)中 然后在maven02項(xiàng)目下執(zhí)行mvn compile。 pom.xml中的依賴會(huì)在本地倉(cāng)庫(kù)中查找,如果沒(méi)有就去網(wǎng)上倉(cāng)庫(kù)中心下載到本地倉(cāng)庫(kù)。


maven自動(dòng)創(chuàng)建目錄

在項(xiàng)目根目錄下打開(kāi)cmd窗口(shift+右鍵—>cmd) 1. 輸入archetype:generate,然后按照提示進(jìn)行選擇(會(huì)卡在奇怪的地方,運(yùn)行mvn archetype:generate -DarchetypeCatalog=internal可以解決) 出現(xiàn)choose a number or apply filter,貌似前面是一些模板,直接回車(chē)。 2. archetype:generate -DgourpId=組織名,公司網(wǎng)址的反寫(xiě)+項(xiàng)目名稱 -DartifactId=項(xiàng)目名-模塊名 -Dversion=版本號(hào) -Dpackage=代碼所在的包名 mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.imooc.maven04.demo -DarchetypeCatalog=internal


Maven中的坐標(biāo)和倉(cāng)庫(kù)

構(gòu)造通過(guò)坐標(biāo)作為其唯一標(biāo)識(shí),如

<groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version>

更改本地倉(cāng)庫(kù)位置: 打開(kāi)…/apache-maven-3.3.9/conf/settings.xml 找到<settings>標(biāo)簽,中間添加<localRepository>要存放本地倉(cāng)庫(kù)的位置(例如D:/repo)</localRepository>


用Eclipse創(chuàng)建Maven項(xiàng)目

在Eclipse安裝Maven(雖然Eclipse自帶maven插件的。

右鍵new—>maven project,選擇quickstart 運(yùn)行:在pom.xml右鍵run as—>Maven build… Goals處輸入:compile 點(diǎn)擊run


Maven生命周期

Maven定義了三套生命周期,三套生命周期之間相互獨(dú)立

clean生命周期pre-clean:執(zhí)行清理前的工作;clean:清理上一次構(gòu)建生成的所有文件;post-clean:執(zhí)行清理后的工作default生命周期validategenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources 復(fù)制并處理資源文件,至目標(biāo)目錄,準(zhǔn)備打包。compile 編譯項(xiàng)目的源代碼。process-classesgenerate-test-sources process-test-sources generate-test-resourcesprocess-test-resources 復(fù)制并處理資源文件,至目標(biāo)測(cè)試目錄。test-compile 編譯測(cè)試源代碼。process-test-classestest 使用合適的單元測(cè)試框架運(yùn)行測(cè)試。這些測(cè)試代碼不會(huì)被打包或部署。prepare-packagepackage 接受編譯好的代碼,打包成可發(fā)布的格式,如 JAR 。pre-integration-testintegration-testpost-integration-testverifyinstall 將包安裝至本地倉(cāng)庫(kù),以讓其它項(xiàng)目依賴。deploy 將最終的包復(fù)制到遠(yuǎn)程的倉(cāng)庫(kù),以讓其它開(kāi)發(fā)人員與項(xiàng)目共享。site生命周期pre-site 執(zhí)行一些需要在生成站點(diǎn)文檔之前完成的工作site 生成項(xiàng)目的站點(diǎn)文檔post-site 執(zhí)行一些需要在生成站點(diǎn)文檔之后完成的工作,并且為部署做準(zhǔn)備site-deploy 將生成的站點(diǎn)文檔部署到特定的服務(wù)器上

運(yùn)行任何一個(gè)階段的時(shí)候,它前面的所有階段都會(huì)被運(yùn)行,這也就是為什么我們運(yùn)行mvn install 的時(shí)候,代碼會(huì)被編譯,測(cè)試,打包。

Maven插件

Maven的核心分發(fā)包只有不到3MB的大小,Maven會(huì)在需要的時(shí)候下載并使用插件,對(duì)于插件本身,為了能夠復(fù)用代碼,它往往能夠完成多個(gè)任務(wù)。Maven的生命周期與插件相互綁定,用以完成實(shí)際的構(gòu)建任務(wù)。具體而言是生命周期的階段與插件的目標(biāo)相互綁定,以完成某個(gè)具體的構(gòu)建任務(wù)。

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>package</phase> <!--綁定到的目標(biāo)階段--> <goals> <goal>jar-no-fork</goal> <!--目標(biāo)方式,無(wú)分支--> </goals> </execution> </executions> <configuration> <outputDirectory>/absolute/path/to/the/output/directory</outputDirectory> <!--輸出路徑--> <finalName>filename-of-generated-jar-file</finalName> <attach>false</attach> </configuration> </plugin> </plugins></build>

Maven中pom.xml的解析

1.根元素 project2.modelVersion 固定版本4.0.0 指定了當(dāng)前pom的版本3.坐標(biāo) <groupId>,<artifactId>,<version>,<packageing> groupId 反寫(xiě)的公司網(wǎng)址+項(xiàng)目名 artifactId 項(xiàng)目名+模塊名 version 版本號(hào) 第一個(gè)0表示大版本號(hào),第二個(gè)0表示大版本號(hào),第三個(gè)0表示大版本號(hào)。如:0.0.1snapshot (snapshot 快照/ alpha 內(nèi)部測(cè)試/ beta 公測(cè)/ Release穩(wěn)定/ GA正式發(fā)布) packaging 打包方式 默認(rèn)是jar4.name :項(xiàng)目描述名 url:項(xiàng)目的地址 description:項(xiàng)目描述 developers:開(kāi)發(fā)人員列表 licenses:許可證 organization:組織信息5.dependencies列表<scope>依賴范圍: compile:默認(rèn)范圍,編譯測(cè)試運(yùn)行都有效 provided:在編譯和測(cè)試時(shí)有效 runtime:在測(cè)試和運(yùn)行時(shí)有效 test:只在測(cè)試時(shí)有效,典型的是Junit system:在編譯和測(cè)試時(shí)有效,與本機(jī)系統(tǒng)關(guān)聯(lián),可移植性差 import:導(dǎo)入的范圍,它只使用在dependencyManagement中,表示從其他的pom中導(dǎo)入dependency的配置<optional>:設(shè)置依賴是否可選 默認(rèn)FALSE<exclusions>:排除依賴傳遞列表,例如A依賴B,B依賴C,那么在項(xiàng)目A中會(huì)導(dǎo)入B和C,但是只想導(dǎo)入B,則可以在這里添加C的坐標(biāo),使得C不被導(dǎo)入6.dependencyManagement依賴管理,僅僅啟到定義的作用,用于定義parent,子模塊繼承。7.build 構(gòu)建行為提供相應(yīng)的支持plugins插件列表8.<parent><modules> 可以指定多個(gè)模塊一起編譯 <module></module> <module></module></modules>

Maven依賴沖突

不同版本的構(gòu)件 1.短路優(yōu)先 2.先聲明先優(yōu)先,如果路徑長(zhǎng)度相同,則誰(shuí)先聲明,先解析誰(shuí)


使用maven構(gòu)建web項(xiàng)目

新建Maven項(xiàng)目,在Filter處選擇webapp 配置pom.xml加入Servlet 配置jetty或者Tomcat服務(wù)器

<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.imooc.webdemo</groupId> <artifactId>webdemo</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>webdemo Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>webdemo</finalName> <plugins> <plugin> <!-- <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.1.v20170120</version> --> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <!-- 在打包成功后運(yùn)行服務(wù)器 --> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>

學(xué)習(xí)感悟:簡(jiǎn)單的了解了Maven的用途和使用方法。體會(huì)到了用Maven來(lái)構(gòu)建項(xiàng)目的方便之處。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辛集市| 平武县| 吴忠市| 霸州市| 寿阳县| 土默特右旗| 五河县| 方正县| 桐柏县| 隆回县| 罗源县| 西昌市| 奇台县| 大连市| 昌都县| 江阴市| 南召县| 沈阳市| 临高县| 香港| 新宾| 永嘉县| 尖扎县| 崇义县| 武川县| 海伦市| 栾城县| 鄂托克前旗| 绥化市| 巢湖市| 黄山市| 望江县| 蓝山县| 古丈县| 靖远县| 大石桥市| 怀宁县| 福鼎市| 滕州市| 洛川县| 清流县|