說(shuō)說(shuō)Maven項(xiàng)目搭建及常用包添加
什么是Maven?
Maven是基于項(xiàng)目對(duì)象模型(POM),可以通過(guò)一小段描述信息來(lái)管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件項(xiàng)目管理工具.
如果你已經(jīng)有十次輸入同樣的Ant targets來(lái)編譯你的代碼、jar或者war、生成javadocs,你一定會(huì)自問(wèn),是否有一個(gè)重復(fù)性更少卻能同樣完成該工作的方法。Maven便提供了這樣一種選擇,將你的注意力從作業(yè)層轉(zhuǎn)移到項(xiàng)目管理層。Maven項(xiàng)目已經(jīng)能夠知道如何構(gòu)建和捆綁代碼,運(yùn)行測(cè)試,生成文檔并宿主項(xiàng)目網(wǎng)頁(yè).
項(xiàng)目的主頁(yè)地址為:http://maven.apache.org/
我不習(xí)慣使用命令式的,所以我的Maven用的是Eclipse插件,插件地址:http://m2eclipse.sonatype.org/sites/m2e
安裝以后,就可以用它來(lái)建立項(xiàng)目了。
一、首先新建一個(gè) Maven project,在Next中選擇Create a simple project 這樣就新建一個(gè)Maven項(xiàng)了。
二、修改.project文件(可以在Navigator視圖中看到)
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
- </natures>
三、修改工程的Project Facets,選中項(xiàng)目右鍵點(diǎn)擊Properties,在Project Facets中選擇Dynamic Web Module 和 Jave(只有經(jīng)過(guò)上述兩步操作才能在Tomcat中發(fā)布),如果修改此處后還是無(wú)法在Apace的tomcat service中Add此項(xiàng)目,就可以查看org.eclipse.wst.common.project.facet.core.xml的文件,里面配置有各種版本信息。
- <?xml version="1.0" encoding="UTF-8"?>
- <faceted-project>
- <fixed facet="wst.jsdt.web"/>
- <installed facet="java" version="1.6"/>
- <installed facet="jst.web" version="2.5"/>
- <installed facet="wst.jsdt.web" version="1.0"/>
- </faceted-project>
我在搭建的時(shí)候<installed facet="jst.web" version="3.0"/>太高,修改后才能Add。
四、配置輸出,在 Properties 中的Deployent Assembly 中配置項(xiàng)目Publish時(shí),項(xiàng)目中的文件對(duì)應(yīng)Publish后路徑。記得加上Maven包,只有這樣Maven管理的包才能發(fā)布過(guò)去。或者可以直接修改 修改.settings文件夾下的org.eclipse.wst.common.component文件中的配置,此配置是配置發(fā)布后對(duì)應(yīng)的路徑。如:
- <?xml version="1.0" encoding="UTF-8"?>
- <project-modules id="moduleCoreId" project-version="1.5.0">
- <wb-module deploy-name="xiao">
- <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
- <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>
- <wb-resource deploy-path="/WEB-INF/lib" source-path="/src/main/webapp/WEB-INF/lib"/>
- <property name="context-root" value="xiao"/>
- <property name="java-output-path" value="/xiao/target/classes"/>
- </wb-module>
- </project-modules>
五、在Properties for Maven 下的Java Build Path 的Order and Export中配置 Build Path,勾上Maven的管理包。或者修改.classpath文件,在其中加入包的依賴,這樣在發(fā)布時(shí)可以將由Maven管理的包直接發(fā)布過(guò)去。如:
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>
- <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
- <attributes>
- <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
- <classpathentry kind="output" path="target/classes"/>
- </classpath>
(此文件也在直接在工程目標(biāo)下直接找到)
六、經(jīng)過(guò)上面幾步,基本的Maven管理包環(huán)境已經(jīng)搭建好了,可以打開(kāi)Pom.xml文件添加需要的包了,它的幾個(gè)視圖作用分別是:
- Overview:顯示maven項(xiàng)目的一些基本信息.
- Dependencies:添加jar包的頁(yè)面,很重要!
- Plugins:添加maven插件的頁(yè)面.比如tomcat-maven-plugin等.
- Reporting:從沒(méi)用過(guò),無(wú)視~
- Dependency Hierarchy:用于顯示jar包的依賴關(guān)系.沒(méi)事的時(shí)候可以看看jar包的依賴關(guān)系.
- Effective POM:顯示maven的編譯路徑,plugin之類(lèi)的.也可以無(wú)視.
- pom.xml:導(dǎo)入jar包的信息,可以在其中進(jìn)行修改.重要
七、構(gòu)建項(xiàng)目后最好將工程關(guān)閉再重新打開(kāi),有時(shí)候如果不重新打開(kāi)配置就無(wú)法加載進(jìn)入發(fā)布路徑去。經(jīng)過(guò)上述幾步就可以搭建Maven項(xiàng)目了,直接在工程文件夾下打開(kāi).metadata\.plugins\org.eclipse.wst.server.core 路徑,就可以看到發(fā)布后的工程。其主要內(nèi)容均在wtpwebapps文件夾下。
八、加包。在pom.xml文件的Dependencies下,Dependencies中Add包。
- struts2:struts2-core
- spring:spring-orm,spring-struts,struts2-spring-plugin
- acegi:acegi-security-cas
對(duì)于上述幾個(gè),只要加入這幾個(gè)包就可以了,其它的依賴全會(huì)自動(dòng)加入。保存時(shí)自動(dòng)下載所需要的包至本地倉(cāng)庫(kù)。在對(duì)tomcat clean后就可以在發(fā)布路徑下看到包了。
九、注意,有時(shí)間包下載可能不成功,就時(shí)候就得重新下載了,重新下載前先到本地倉(cāng)庫(kù)中刪除此包文件夾,方可重新下載。到local repository中找到對(duì)應(yīng)的文件夾,會(huì)發(fā)現(xiàn)里面有一個(gè)XXXX.jar.lastupdated的文件,這個(gè)是之前沒(méi)有下載完成的jar,由于它的存在,影響了maven的更新,刪之,再次update dependencies,搞定。 (到c盤(pán)中對(duì)應(yīng)的系統(tǒng)帳號(hào)文件夾下找.m2)。
至此,基本可以發(fā)布Maven項(xiàng)目了。
簡(jiǎn)單的struts+spring用Maven搭建Demo:http://download.csdn.net/source/3533859
原文鏈接:http://www.cnblogs.com/kuyijie/archive/2011/08/20/2146463.html
【編輯推薦】
- 電影《Java風(fēng)云》預(yù)告片
- 基于Java的HBase客戶端編程
- 關(guān)于Eclipse使用64位Java 7崩潰的問(wèn)題
- Java 7是蜜糖還是毒藥?
- 紅帽的PaaS平臺(tái)OpenShift支持Java EE 6