maven 學習總結(三)——使用Maven構建專案
maven作為一個高度自動化構建工具,本身提供了構建專案的功能,下面就來體驗一下使用maven構建專案的過程。
一、構建Jave專案
1.1、建立Jave Project
1、使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2、使用mvn archetype:create命令,如下所示:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
使用”mvn archetype:generate”命令和”mvn archetype:create”都可以建立專案,目前沒有發現這兩者的區別,唯一區別的地方就是發現使用”mvn archetype:generate”命令建立專案時要特別長的時間才能夠將專案建立好,而使用”mvn archetype:create”命令則可以很快將專案建立出來。
使用”mvn archetype:create”命令建立一個java專案的過程如下圖所示:
BUILD SUCCESS就表示專案構建成功,當在前使用者目錄下(即C:\Documents and Settings\Administrator)下構建了一個Java Project叫做myapp。
構建好的Java專案的目錄結構如下:
可以看到,Maven幫我們建立的專案是一個標準的Maven專案,不過目前Maven只是幫我們生成了src/main/java(存放專案的原始碼)和src/test/java(存放測試原始碼)這兩個目錄,但實際專案開發中我們一般都會有配置檔案,例如log4j.properties,所以我們還需要手動建立src/main/resources(存放專案開發中用到的配置檔案,如存放log4j.properties等)和src/test/resources(存放測試時用到的配置檔案),如下圖所示:
然後我們就可以將建立好的myapp專案匯入到Eclipse中進行開發了,如下圖所示:
1.2、JavaProject的pom.xml檔案說明
通過Maven構建的JavaProject,在專案的根目錄下都會存在一個pom.xml檔案,進入myapp目錄,可以看到有一個pom.xml檔案,這個檔案是Maven的核心。如下圖所示:
1、pom意思就是project object model。
2、pom.xml包含了專案構建的資訊,包括專案的資訊、專案的依賴等。
3、pom.xml檔案是可以繼承的,大型專案中,子模組的pom.xml一般都會繼承於父模組的pom.xml
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
pom.xml檔案的節點元素說明:
<project> pom檔案的頂級節點
<modelVersion> object model版本,對Maven2和Maven3來說,只能是4.0.0
<groupId> 專案建立組織的識別符號,一般是域名的倒寫
<artifactId> 定義了專案在所屬組織的識別符號下的唯一標識,一個組織下可以有多個專案
<version> 當前專案的版本,SNAPSHOT,表示是快照版本,在開發中
<packaging> 打包的方式,有jar、war、ear等
<name> 專案的名稱
<url> 專案的地址
<properties> 屬性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies> 構建專案依賴的jar
其中由groupId、artifactId和version唯一的確定了一個專案座標
1.3、使用Maven編譯-測試-打包-安裝專案
1.3.1、編譯
編譯源程式,進入命令列,切換到myapp目錄,執行命令:mvn clean compile,如下圖所示:
編譯成功,在myapp目錄下多出一個target目錄,target\classes裡面存放的就是編譯後的class檔案,如下圖所示:
1.3.2、測試
進入命令列,切換到myapp目錄,執行命令:mvn clean test,如下圖所示:
測試成功,在myapp\target目錄下會有一個test-classes目錄,存放的就是測試程式碼的class檔案,如下圖所示:
1.3.3、打包
進入命令列,切換到myapp目錄,執行命令:mvn clean package,執行打包命令前,會先執行編譯和測試命令,如下圖所示:
構建成功後,會在target目錄下生成myapp-1.0-SNAPSHOT.jar包,如下圖所示:
1.3.4、安裝
進入命令列,切換到my-app目錄,執行命令:mvn clean install ,執行安裝命令前,會先執行編譯、測試、打包命令,如下圖所示:
構建成功,就會將專案的jar包安裝到本地倉庫,如下圖所示:
1.3.5、執行jar包
進入命令列,切換到myapp目錄,執行命令:java -cp target\myapp-1.0-SNAPSHOT.jar com.mycompany.app.App,如下圖所示:
二、構建JavaWeb專案
2.1、建立JavaWeb專案
1、使用mvn archetype:generate命令,如下所示:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
使用”mvn archetype:generate”命令建立一個javaWeb專案的過程如下圖所示:
使用”mvn archetype:generate”命令建立一個javaWeb專案的時間非常長,要了40多秒,有時甚至會更久,不知道為啥。
2、使用mvn archetype:create命令,如下所示:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
使用”mvn archetype:create”命令建立一個javaWeb專案的過程如下圖所示:
使用”mvn archetype:create”命令建立一個javaWeb專案的時間非常快,幾秒鐘就可以了。
建立好的JavaWeb專案的目錄結構如下:
建立好的JavaWeb專案中目前只有src/main/resources目錄,因此還需要手動新增src/main/java、src/test/java、src/test/resources
如下圖所示:
接著我們就可以將建立好的JavaWeb匯入Eclipse中進行開發了,如下圖所示:
2.2、使用Maven打包釋出Web專案
Maven幫我們建立的JavaWeb專案是一個空的專案,只有一個index.jsp頁面,我們使用Maven將Web專案打包釋出執行。
在命令列切換到myWebApp目錄,執行:mvn package,構建成功後,myWebApp目錄目錄下多了一個target目錄,在這個目錄下會打包成myWebApp目錄.war,把這個war包拷貝到Tomcat的釋出目錄下就可以執行了。如下圖所示:
打包成功,在myWebApp\target目錄下生成了一個myWebApp.war檔案,如下圖所示:
將myWebApp.war放到tomcat伺服器中執行,如下圖所示:
執行效果如下:
除了使用Tomcat伺服器執行Web專案之外,我們還可以在Web專案中整合Jetty釋出執行,首先在pom.xml檔案中配置Jetty外掛,如下:
<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.mycompany.app</groupId>
<artifactId>myWebApp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myWebApp 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>myWebApp</finalName>
<pluginManagement>
<!--配置Jetty-->
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
開啟命令列視窗,切換到myWebApp目錄,然後執行:mvn jetty:run啟動Jetty伺服器,如下圖所示:
接著就可以在8080埠上訪問應用了。如下圖所示:
三、Maven建立專案的命令說明
mvn archetype:create或者mvn archetype:generate 固定寫法
-DgroupId 組織標識(包名)
-DartifactId 專案名稱
-DarchetypeArtifactId 指定ArchetypeId,maven-archetype-quickstart,建立一個Java Project;maven-archetype-webapp,建立一個Web Project
-DinteractiveMode 是否使用互動模式
archetype是mvn內建的一個外掛,create任務可以建立一個java專案骨架,DgroupId是軟體包的名稱,DartifactId是專案名,DarchetypeArtifactId是可用的mvn專案骨架,目前可以使用的骨架有:
- maven-archetype-archetype
- maven-archetype-j2ee-simple
- maven-archetype-mojo
- maven-archetype-portlet
- maven-archetype-profiles (currently under development)
- maven-archetype-quickstart
- maven-archetype-simple (currently under development)
- maven-archetype-site
- maven-archetype-site-simple
maven-archetype-webapp
每一個骨架都會建相應的目錄結構和一些通用檔案,最常用的是maven-archetype-quickstart和maven-archetype-webapp骨架。maven-archetype-quickstart骨架是用來建立一個Java Project,而maven-archetype-webapp骨架則是用來建立一個JavaWeb Project。
不得不說,Maven的確是一個很好的專案構建工具。掌握好Maven對於專案開發是非常有幫助的。
相關文章
- maven 學習總結(八)——使用Maven構建多模組專案Maven
- maven 學習總結(二)——Maven專案構建過程練習Maven
- maven學習總結(七)——eclipse中使用Maven建立Web專案MavenEclipseWeb
- 使用Maven構建Java專案MavenJava
- eclipse 使用 maven 構建專案EclipseMaven
- Maven學習總結Maven
- Maven 構建 Java 專案MavenJava
- Maven Web專案構建MavenWeb
- maven 學習總結(九)——使用Nexus搭建Maven私服Maven
- maven 學習總結(一)——Maven入門Maven
- maven 學習總結(四)——Maven核心概念Maven
- 首次使用ideal構建maven專案webIdeaMavenWeb
- maven 學習總結(六)——Maven與Eclipse整合MavenEclipse
- Maven學習總結(42)——Maven多模組構建中常用的引數Maven
- Maven專案中resources配置總結Maven
- 你竟然沒用 Maven 構建專案?Maven
- 構建dubbo分散式平臺-maven構建根專案分散式Maven
- 使用Eclipse 安裝 構建Maven專案 (step-by-step)EclipseMaven
- Maven 學習筆記——將普通的Java專案轉換成Maven專案(3)Maven筆記Java
- Maven配置阿里雲代理加速構建專案Maven阿里
- Jenkins 2.32.3引數化構建maven專案-java專案JenkinsMavenJava
- maven 學習總結(五)——聚合與繼承Maven繼承
- 使用Maven整合SSH總結Maven
- Maven 總結Maven
- 實戰 | 使用maven 輕鬆重構專案Maven
- eclipse中基於maven構建多模組專案EclipseMaven
- 0.Maven構建spring專案(4.3.6.RELEASE)MavenSpring
- maven 使用maven profile實現多環境可移植構建Maven
- SSM(十) 專案重構-網際網路專案的Maven結構SSMMaven
- Maven專案目錄結構與自動建立maven目錄Maven
- 使用maven外掛構建docker映象MavenDocker
- Maven 學習Maven
- Maven學習Maven
- IDEA + maven 零基礎構建 java agent 專案IdeaMavenJava
- Maven專案多環境構建的最小配置方案指南Maven
- Maven 高階篇之構建多模組專案的方法Maven
- (十) 構建dubbo分散式平臺-maven構建ant-utils工具專案分散式Maven
- 在 Maven 專案中使用 HanLPMavenHanLP