Maven這個個項目管理和構建自動化工具,愈來愈多的開發人員使用它來管理項目中的jar包。本文僅對Eclipse中如何安裝、配置和使用Maven進行了介紹。徹底step by step。css
若是以爲本文對你有用,請移步到:http://download.csdn.net/detail/qjyong/5582071 下載PDF版,http://download.csdn.net/detail/qjyong/5582087 下載配套示例項目源代碼。html
進入eclipse官網的下載頁面:http://www.eclipse.org/downloads/,以下圖所示:java
根據你的操做系統具體狀況選擇相應的版本。我這裏選擇的是「Eclipse IDE for JavaEE Developers」的Windows 32 Bit版本。下載到本地磁盤便可。把下載完成的「eclipse-jee-juno-SR2-win32.zip」解壓縮到本地磁盤指定目錄下。我這裏是解壓縮在D:盤根目錄下。mysql
進入解壓縮後的目錄中,雙擊「eclipse.exe」便可打開Eclipse的工做界面。(注:Eclipse正常運行的前提是在系統變量中存在名爲「JAVA_HOME」的變量,值爲JDK的安裝目錄)。web
進入Maven官網的下載頁面:http://maven.apache.org/download.cgi,以下圖所示:spring
選擇當前最新版本:「apache-maven-3.0.4-bin.zip」,下載到本地,解壓縮到本地磁盤D:下。sql
進入Maven安裝目錄下的conf子目錄中,打開settings.xml進行配置修改。數據庫
Maven默認的本地倉庫位置是當前用戶工做目錄下的「.m2/repository」,使用過程當中這個目錄裏的文件會比較多,佔用空間愈來愈大。通常建議更換到其它磁盤目錄下。以下配置,就把默認的本地倉庫更改到D: /.m2/repository這個目錄(這個目錄結構須要本身建立好)。apache
<localRepository>d:/.m2/repository</localRepository>api |
Maven默認的中央倉庫裏的文件不全。因此,都須要自行添加其它的鏡像地址。在settings.xml文件中的「<mirrors>」標籤裏添加以下內容:
<mirror> <id>ibiblio</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://mirrors.ibiblio.org/maven2/</url> </mirror> |
保存所作的修改,同時還須要把這個settings.xml文件複製一份到「D:/.m2」目錄下。
Eclipse默認不支持Maven。須要給它添加m2eclipse插件。下面是具體的操做步驟。
依次選擇Eclipse菜單欄的「Help」菜單à「Instance NewSoftWare」菜單項,就會彈出以下對話窗口:
選擇「Add..」按鈕,又會彈出以下對話框:
這個對話框就是用於添加一個插件地址的。在「Name」對應的輸入框裏輸入該操做的一個標識名。在「Location」對應的輸入框裏輸入這個插件的安裝地址。注:Maven的Eclipse插件地址爲:http://download.eclipse.org/technology/m2e/releases。輸入後,以下圖所示:
輸入完成後,點擊右下角的「OK」按鈕,就會彈出以下對話框:
這裏須要選擇想要安裝的插件的詳細內容。選中「Maven Integration for Eclipse」前面的複選框。以下圖所示:
選擇完成後,點擊右下方的「Next>」按鈕進行安裝。安裝成功後,會提示須要重啓Eclipse來生效此次配置。重啓以後,這個Eclipse就可使用m2eclipse插件功能了。
插件安裝好以後,還須要進行一些配置纔可以開始使用Maven的功能。
依次選擇Eclipse菜單欄的「Window」à「Preferences」菜單項,就會彈出以下對話框:
在這個對話框左邊的導航欄中展開「Maven」目錄結點,並選擇「Installations」子節點,以下圖所示:
這裏須要關聯上對應的Maven安裝程序。具體操做是,在右邊面板中選擇「Add…」按鈕,會彈出以下選擇Maven安裝目錄的選擇對話框:
經過這個對話框來選擇Maven的具體安裝目錄。選擇好以後就點擊「肯定」按鈕。以下圖所示:
選擇如上圖對話窗口左邊菜單樹 「Maven」節點下的「UserSettings」子節點,它默認的配置文件是「C:\Documents and Settings\csdn\.m2\settings.xml」,以下圖所示:
這邊須要修改成咱們自定義倉庫位置下的settings.xml文件。具體操做是,點擊「Browse…」按鈕來選擇上一步驟修改的本地倉庫目錄下的settings.xml文件,以下圖所示:
在上圖中選擇D:/.m2目錄下的「settings.xml」文件,點擊「打開」按鈕來確認剛纔的選擇,就會回到以下圖的對話窗口中:
在上圖中點擊右下角的「OK」按鈕來完成全部的配置修改。
m2eclispe插件中默認提供了一些Maven樣板項目,可使用這些樣板來建立符合咱們要求的項目。具體操做以下步驟:
在eclipse菜單欄中選擇「File」à「News」à「Other」菜單項,就會打開以下對話窗口,在窗口中選擇「Maven」節點下「Maven Project」條目,以下圖所示:
點擊「Next>」按鈕,進入以下窗口:
再次選擇「Next >」按鈕,進入以下窗口:
在這個窗口中選擇「maven-archetype-webapp」來建立一個Maven的web項目,再選擇「Next>」按鈕,進入以下圖窗口:
在上圖窗口的「Group Id」中輸入項目的基本包名,在「Artifact Id」中輸入項目名,其它輸入框不用理會。點擊「Finish」按鈕來完成項目的整個建立過程。
以後,Maven就會根據項目的配置去中央倉庫下載相應的文件和jar包。完成後,就有以下項目目錄結構:
如上圖所示,「pom.xml」文件就是這個項目的maven配置文件。打開此文件,並在「<build>」標籤內添加以下配置:
<defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> |
這段配置中「<defaultGoal>」標籤指定maven的默認操做是「install」;「maven-surefire-plugin」插件配置了「忽略編譯項目時的測試運行」;「maven-compiler-plugin」插件指定了一些編譯時的信息配置。
Java Web項目中還須要添加ServletAPI、JSP API以及JSTL的jar包,這能夠直接在pom.xml文件中添加了。以下pom.xml文件中就添加了Servlet-API 2.5版本、JSP-API2.1版本、JSTL 1.2版本:
<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.qiujy</groupId> <artifactId>testweb_svn</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>testweb_svn Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> <build> <finalName>testweb_svn</finalName> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </project> |
這裏說明一下:對Servlet和JSP的API包,在編譯web項目時須要使用,而把web項目打包部署到web容器(如Tomcat)中運行時就不須要了。所以,這裏把它們的<scope>配置爲provided。
爲了便於在Eclipse中開發JavaWeb項目,咱們須要把Maven項目的目錄結構轉換成Eclipse工程的目錄結構,具體按以下操做步驟進行。
選中項目在右鍵菜單中選擇「Properties」,彈出以下圖所示對話窗口:
選中左邊功能樹中的「ProjectFacets」節點,而後在對應的右邊面板中點擊「Convert to faceted from…」這個超連接,右邊面板就會切換成以下圖所示:
在「Project Facet」中進行相應配置,以下圖所示:
配置好以後,選擇窗口右下角的「OK」按鈕來保存配置。這時,這個Maven項目就會轉換成Eclipse的web工程目錄結構。
若是還須要直接在Eclipse中運行這個web工程,還須要把Maven依賴包添加到本項目類路徑中:
還須要添加部署到Tomcat時的依賴包,以下圖:
點擊「Finish」來完成後,對話框以下圖所示:
以後點擊「OK」按鈕來完成這些設置。
因爲Maven中的「maven-archetype-webapp」樣板項目的「web.xml」是2.3版本的,咱們須要替換成新版本:能夠把Eclipse的web工程webContent/WEB-INF目錄下的「web.xml」文件複製替換掉「src/main/webapp/WEB-INF/」目錄下的web.xml文件。
注意:因爲Maven項目編譯和發佈時,它只是把「src」目錄下的資源壓縮到一個war包中。而使用Eclipse-JEE開發web項目時,都是把頁面資源(html/css/js/img/JSP)放置在WebContent目錄下。因此,在使用Maven來編譯和發佈項目前,須要把WebContent目錄下的資源複製到「src/main/webapp/」目錄下。
在項目中的「pom.xml」文件上點擊右鍵,在彈出的菜單中選擇「Run AS」à「Maveninstall」來編譯和生成項目。以下圖所示:
在編譯和生成過程當中,能夠在「Console」面板中能夠看到Maven編譯過程的信息,若是編譯和生成成功,能夠在「Console」面板看到「BUILD SUCCESS」字樣。
另外,在修改pom.xml文件中的相關jar包信息時,可能因爲倉庫中不存在,就會出現一些錯誤,這時,項目編譯就可能存在一些問題。此時可經過「Maven clean」選項來清除編譯,而後再修改pom.xml到正確狀況。再經過「Maven install」來編譯和生成。
以下是一個SpringMVC3+Spring3+Hibernate4的web項目中的pom.xml文件:
<projectxmlns="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.qiujy</groupId> <artifactId>site2013</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>site2013 Maven Webapp</name> <url>http://maven.apache.org</url>
<properties> <spring.version>3.2.3.RELEASE</spring.version> <hibernate.version>4.2.2.Final</hibernate.version> <slf4j.version>1.7.5</slf4j.version> <jackson.version>2.2.2</jackson.version> </properties>
<dependencies> <!-- servlet/jsp api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency>
<!-- jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- javaxmail <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.5</version> </dependency>-->
<!-- slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency>
<!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency>
<!-- proxool <dependency> <groupId>proxool</groupId> <artifactId>proxool</artifactId> <version>0.8.3</version> </dependency> -->
<!-- MySQL driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-Java</artifactId> <version>5.1.22</version> </dependency>
<!-- sql server數據庫驅動 <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.3.0</version> </dependency> -->
<!-- Oracle數據庫驅動:maven倉庫中的ojdbc下載須要oracle的官方受權,先在網上找一個ojdbc14.jar包,上傳到本地的maven倉庫 mvn install:install-file -Dfile=D:/resources/ojdbc/ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> </dependency> -->
<!-- fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency> <!-- io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
<!-- c3p0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency>
<!-- struts2 <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> <exclusions> <exclusion> <artifactId>javassist</artifactId> <groupId>javassist</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts.version}</version> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> -->
<!-- spring3 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency>
<!-- spring須要的aspectj依賴包 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.7.2</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
<!-- spring web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency>
<!-- spring mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency>
<!-- <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.1.6</version> </dependency> -->
<!-- hibernate4 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency>
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> </dependencies>
<!-- ========================================================== --> <build> <finalName>site2013</finalName> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project> |
來源:http://blog.csdn.net/qjyong/article/details/9098213