文章出處

 maven作為一個高度自動化構建工具,本身提供了構建項目的功能,下面就來體驗一下使用maven構建項目的過程。

一、構建Java項目

1.1、創建Java 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 -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.4.9 -DgroupId=com.mycompany -DartifactId=myproject  -DarchetypeCatalog=internal

 

  使用"mvn archetype:create"命令創建一個java項目的過程如下圖所示:

  

值得注意的是出現了這個錯誤  

用create方法創建項目的時候報錯了,用generate可以 是因為 :

archetype:create 這個命令在maven 3.02以上的版本已經不用了, 用generate 命令代替
請參考官方文檔
archetype:create
Full name:

org.apache.maven.plugins:maven-archetype-plugin:2.4:create

This plugin goal has been deprecated:

Please use the generate mojo instead。

 

需要耐心等待3分鐘左右才好

 

  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文件的內容如下:

按 Ctrl+C 復制代碼
按 Ctrl+C 復制代碼

  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插件,如下:

 
 打開命令行窗口,切換到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-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用來創建一個Java Project,而maven-archetype-webapp骨架則是用來創建一個JavaWeb Project。

  不得不說,Maven的確是一個很好的項目構建工具。掌握好Maven對于項目開發是非常有幫助的。


文章列表

全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()