1.maven升級html
你們能夠看獲得個人第一篇文章裏面用的是maven 2.2.1,可是如今已經出了maven更高級的版本,咱們升級以得到更多更酷的新特性,以及避免一些舊的bug,且maven新版本是向下兼容,因此不要再猶豫,根本不會出現什麼問題。
java
在Windows上更新Maven很是簡便,只須要下載新的Maven安裝文件,解壓至本地目錄,而後更新M2_HOME環境變量即可。例如,假設Maven推出了新版本3.1,咱們將其下載而後解壓至目錄D:\bin\apache-maven-3.1,接着遵守前一節描述的步驟編輯環境變量M2_HOME,更改其值爲D:\bin\apache-maven-3.1。至此,更新就完成了。同理,若是你須要使用某一箇舊版本的Maven,也只須要編輯M2_HOME環境變量指向舊版本的安裝目錄。web
注意:我下面講的都是針對maven 3版本的apache
2. maven 經常使用命令總結(只對maven 3以上的版本,maven 2版本不適用)瀏覽器
1)建立一個Projecttomcat
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate 固定格式服務器
-DgroupId 組織標識(包名)mvc
-DartifactId 項目名稱app
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,建立一個Java Project;maven-archetype-webapp,建立一個Web Projecteclipse
-DinteractiveMode 是否使用交互模式
2)編譯源代碼
mvn compile
3)編譯測試代碼
mvn test-compile
4)清空
mvn clean
5)運行測試
mvn test
6)生產站點目錄並打包
mvn site-deploy
7)安裝當前工程的輸出文件到本地倉庫
mvn install
8)打包
mvn package
9)先清除再打包
mvn clean package
10)打成jar包
mvn jar:jar
11)生成eclipse項目
mvn eclipse:eclipse
12)查看幫助信息
mvn help:help
13)查看maven有哪些項目類型分類
mvn archetype:generate -DarchetypeCatalog=intrenal
3 .用maven構建java項目
1>進入命令行,執行下面的語句。
mvn archetype:generate -DgroupId=cn.luxh.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
執行完成後,結果以下:
BUILD SUCCESS,當在前用戶目錄下(即D:\maven)下構建了一個Java Project叫作my-app
2> 進入my-app目錄,能夠看到有一個pom.xml文件,這個文件是Maven的核心。
1)pom意思就是project object model。
2)pom.xml包含了項目構建的信息,包括項目的信息、項目的依賴等。
3)pom.xml文件是能夠繼承的,大型項目中,子模塊的pom.xml通常都會繼承於父模塊的pom.xml
4)剛構建的pom.xml說明
<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>cn.luxh.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>my-app</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
節點元素說明
<project> pom文件的頂級節點 <modelVersion> object model版本,對Maven2和Maven3來講,只能是4.0.0 <groupId> 項目建立組織的標識符,通常是域名的倒寫 <artifactId> 定義了項目在所屬組織的標識符下的惟一標識,一個組織下能夠有多個項目 <packaging> 打包的方式,有jar、war、ear等 <version> 當前項目的版本,SNAPSHOT,表示是快照版本,在開發中 <name> 項目的名稱 <url> 項目的地址 <dependencies> 構建項目依賴的jar <description> 項目的描述
其中由groupId、artifactId和version惟一的肯定了一個項目座標
3>構建的my-app項目結構以下
1)編譯源程序,進入命令行,切換到my-app目錄,執行命令:mvn clean compile
編譯成功,在my-app目錄下多出一個target目錄,target\classes裏面存放的就是編譯後的class文件(App.class)
2)測試,進入命令行,切換到my-app目錄,執行命令:mvc clean test
測試成功,在my-app\target目錄下會有一個test-classes目錄,存放的就是測試代碼的class文件。
3)打包,進入命令行,切換到my-app目錄,執行命令:mvc clean package,執行打包命令前,會先執行編譯和測試命令
構建成功後,會再target目錄下生成my-app-1.0-SNAPSHOT.jar包
4)安裝,進入命令行,切換到my-app目錄,執行命令:mvc clean install ,執行安裝命令前,會先執行編譯、測試、打包命令
構建成功,就會將項目的jar包安裝到本地倉庫
5)運行jar包,進入命令行,切換到my-app目錄,執行命令:java -cp target\my-app-1.0-SNAPSHOT.jar cn.luxh.app.App
3. 標準的Maven項目結構
src/main/java 存放項目的源代碼
src/test/java 存放測試源代碼
若是要存放一些配置文件,能夠再創建一個目錄src/main/resource存放,如存放log4j.properties等
4.用maven構建java web項目
一、進入命令行,執行:
mvn archetype:generate -DgroupId=cn.luxh.app -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false
而後cmd輸出卡死在Generating project in Interactive mode不動了,-X 打開debug模式重試了一次:
mvn archetype:generate -X -DgroupId=cn.luxh.app -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false
原來是卡在這裏了:
[DEBUG] -- end configuration --
[INFO] Generating project in Interactive mode
[DEBUG] Searching for remote catalog: http://repo1.maven.org/maven2/archetype-catalog.xml
加個參數 -DarchetypeCatalog=internal 讓它不要從遠程服務器上取catalog:
mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn.luxh.app -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false
出現填寫版本號,輸入:0.0.1SNAPSHOT
確認等直接回車就行,構建成功出現下面的提示。
在當前用戶目錄下,生成的web項目目錄結構以下:
二、固然這個空的項目,只有一個index.jsp頁面,打包發佈運行
方法一:集成Jetty發佈運行,須要配置pom.xml
<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>cn.luxh.app</groupId> <artifactId>my-web-app</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>my-web-app Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>my-web-app</finalName> <plugins> <!-- Jetty Server的配置以下 --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> <configuration> <scanIntervalSeconds>2</scanIntervalSeconds> </configuration> </plugin> </plugins> </build> </project>
而後執行:mvn jetty:run,效果以下:
在taget目錄下,多了以下目錄結構:
在work/jsp/org/apache/jsp/目錄下有一個index_jsp.class文件
能夠看獲得jetty server 已經運行起來了,jetty是一種maven自帶的web容器,而後咱們能夠看獲得默認端口爲:8080,,經過路徑/my-web-app訪問咱們的應用,
在瀏覽器輸入:http://127.0.0.1:8080/my-web-app/,出現以下界面:
方法二:在命令行切換到my-web-app目錄,執行:mvn package,構建成功後,my-web-app目錄下多了一個target目錄,在這個目錄下會打包成my-web-app.war,把這個war包拷貝到Tomcat的發佈目錄下(就是tomcat的webapps目錄下)就能夠運行了。
紅框裏面框住的就是mvn package以後,生成的目錄及文件