《項目管理利器——maven 》學習筆記
Maven下載地址 選擇 apache-maven-3.3.9-bin.zip 下載后解壓。 配置環境變量: 1. 新建環境變量M2_HOME,值為maven解壓的地址,例如:D:/maven/apache-maven-3.3.9 2. 在Path變量的值后面添加;%M2_HOME%/bin;
驗證配置成功:win+r cmd 輸入mvn -v 如果能出現相關信息則成功。
創建文件夾及編寫文件
maven01(PRoject name) -src -main -java -com/maven/imooc/model/HelloWorld.java -test -java -com/maven/imooc/model/HelloWorldTest.java -pom.xmlHelloWorld.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> <!-- 模塊名 建議使用項目名 --> <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中項目目錄下運行mvn compile 看到BUILD SUCCESS即運行成功 (maven下載慢的話可以看這篇博客解決:傳送門 然后運行mvn test 看到BUILD SUCCESS即運行成功 會在項目根目錄下生成文件夾target 運行mvn package
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項目目錄下執行mvn install 將該項目發布到本地倉庫中 然后在maven02項目下執行mvn compile。 pom.xml中的依賴會在本地倉庫中查找,如果沒有就去網上倉庫中心下載到本地倉庫。
在項目根目錄下打開cmd窗口(shift+右鍵—>cmd) 1. 輸入archetype:generate
,然后按照提示進行選擇(會卡在奇怪的地方,運行mvn archetype:generate -DarchetypeCatalog=internal
可以解決) 出現choose a number or apply filter,貌似前面是一些模板,直接回車。 2. archetype:generate -DgourpId=組織名,公司網址的反寫+項目名稱 -DartifactId=項目名-模塊名 -Dversion=版本號 -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
構造通過坐標作為其唯一標識,如
<groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version>更改本地倉庫位置: 打開…/apache-maven-3.3.9/conf/settings.xml 找到<settings>
標簽,中間添加<localRepository>要存放本地倉庫的位置(例如D:/repo)</localRepository>
在Eclipse安裝Maven(雖然Eclipse自帶maven插件的。
右鍵new—>maven project,選擇quickstart 運行:在pom.xml右鍵run as—>Maven build… Goals處輸入:compile 點擊run
Maven定義了三套生命周期,三套生命周期之間相互獨立
clean生命周期pre-clean:執行清理前的工作;clean:清理上一次構建生成的所有文件;post-clean:執行清理后的工作default生命周期validategenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources 復制并處理資源文件,至目標目錄,準備打包。compile 編譯項目的源代碼。process-classesgenerate-test-sources process-test-sources generate-test-resourcesprocess-test-resources 復制并處理資源文件,至目標測試目錄。test-compile 編譯測試源代碼。process-test-classestest 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。prepare-packagepackage 接受編譯好的代碼,打包成可發布的格式,如 JAR 。pre-integration-testintegration-testpost-integration-testverifyinstall 將包安裝至本地倉庫,以讓其它項目依賴。deploy 將最終的包復制到遠程的倉庫,以讓其它開發人員與項目共享。site生命周期pre-site 執行一些需要在生成站點文檔之前完成的工作site 生成項目的站點文檔post-site 執行一些需要在生成站點文檔之后完成的工作,并且為部署做準備site-deploy 將生成的站點文檔部署到特定的服務器上運行任何一個階段的時候,它前面的所有階段都會被運行,這也就是為什么我們運行mvn install 的時候,代碼會被編譯,測試,打包。
Maven的核心分發包只有不到3MB的大小,Maven會在需要的時候下載并使用插件,對于插件本身,為了能夠復用代碼,它往往能夠完成多個任務。Maven的生命周期與插件相互綁定,用以完成實際的構建任務。具體而言是生命周期的階段與插件的目標相互綁定,以完成某個具體的構建任務。
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>package</phase> <!--綁定到的目標階段--> <goals> <goal>jar-no-fork</goal> <!--目標方式,無分支--> </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>不同版本的構件 1.短路優先 2.先聲明先優先,如果路徑長度相同,則誰先聲明,先解析誰
新建Maven項目,在Filter處選擇webapp 配置pom.xml加入Servlet 配置jetty或者Tomcat服務器
<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> <!-- 在打包成功后運行服務器 --> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>學習感悟:簡單的了解了Maven的用途和使用方法。體會到了用Maven來構建項目的方便之處。
新聞熱點
疑難解答