maven中如何創(chuàng)建一個(gè)Web項(xiàng)目
創(chuàng)建一個(gè)Web項(xiàng)目:
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號: 73203
步驟:
new/other/Maven/Maven project,(use default work space)
下一頁:catalog: internal. filter: maven-archetype-webapp
馬克-to-win:而且我們把項(xiàng)目的jdk1.5變成1.6。右擊項(xiàng)目名,propertoes/java build path/libraries/右擊1.5,編輯,變成我們?nèi)笔〉?.6,見下圖
馬克-to-win:(先變jre,否則這步?jīng)]法干,maven bug )【新版eclipse不用干】右擊項(xiàng)目名,新建一個(gè)Source Folder(注意不是普通的folder),src/main/java,
經(jīng)過一番改變,我們的項(xiàng)目變成如下的干凈的空項(xiàng)目。
馬克-to-win:觀察一下項(xiàng)目目錄下的.classpath文件,說明了會把src/main/resources簡單拷貝和src/main/java目錄下的java文件編譯成class輸出到target/classes目錄下
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
在pom.xml中有句<packaging>war</packaging>,所以所有的target/classes都會被復(fù)制到web-inf目錄下。
馬克-to-win:在src/main/java目錄下建立一個(gè)package為com.mark,之后建立類HelloWorld作為Servlet。
為了導(dǎo)包,在pom.xml中加入:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
立即項(xiàng)目中加入javax.servlet-api-3.0.1.jar。
在web.xml中加入。
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.mark.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
HelloWorld.java變成如下:
package com.mark;
import java.io.IOException;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.getWriter().println("nihao ");
} catch (IOException e) {
e.printStackTrace();
}
}
}
馬克-to-win:右擊pom.xml,run as/maven package,則生成helloworld4.war。這就是我們生成的web應(yīng)用,里面有我們的servlet。把他手動拷貝到tomcat服務(wù)器的 webapps目錄下,啟動tomcat,運(yùn)行http://localhost:8080/helloweb4/servlet可以看到結(jié)果。
以上的過程生成war包,再自己拷貝過去太麻煩,如果能用到過去學(xué)過的技術(shù)就好了。那我們就看一下過去的一個(gè)項(xiàng)目?!拘掳鎒clipse以下都不用干,直接右擊jsp就運(yùn)行,和原來一樣?!?br>
右擊項(xiàng)目名/properties
馬克-to-win:所以只要按照這張圖做,我們的maven項(xiàng)目也能和過去一樣,本機(jī)自測項(xiàng)目還是非常方便,本機(jī)自測完成,代碼ok后,只要把war包給客戶就可以了。
馬克-to-win:現(xiàn)在把我們剛做的maven項(xiàng)目改一下。把Project Facet按照上圖改變一下(如果萬一有什么問題, 不要慌,在每個(gè)項(xiàng)目的.settings目錄下,有個(gè)org.eclipse.wst.common.project.facet.core.xml配置文件,如有問題可以手動改它)。把Project Facet改變后,多了一個(gè)過去的WebContent(查看底層的物理路徑也是這樣),現(xiàn)在我們就刪掉它,就保留現(xiàn)在的Webapp,新的截圖是:
上圖中有兩處src,一處是maven過去的src,一處是我們轉(zhuǎn)dynamic web project時(shí)生成的java resources,其實(shí)底層物理路徑是共同的一處。其實(shí)eclipse在做轉(zhuǎn)化的時(shí)候,根據(jù) .classpath文件中知道什么是Source folder。它就把Source folder變成了java resources,所以底層是一處。所以在這兩處的任意一處添加或改動文件效果是一樣的。
而且把deployment assembly也改一下。新的截圖是:
馬克-to-win:當(dāng)我還是像過去一樣,右擊某個(gè)jsp,(run on server),運(yùn)行這個(gè)dynamic web application時(shí),eclipse就會按照deployment assembly的意圖,把webapp目錄下的所有東西拷貝到D:\eclipseJee\.metadata\.plugins\ org.eclipse.wst.server.core\tmp2\wtpwebapps\helloweb5。注意上面的maven dependency是必須的根據(jù)實(shí)驗(yàn),否則jar包過不去。