maven中如何創(chuàng)建一個Web項目

創(chuàng)建一個Web項目:
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203

步驟:
new/other/Maven/Maven project,(use default work space)
下一頁:catalog: internal. filter: maven-archetype-webapp








































馬克-to-win:而且我們把項目的jdk1.5變成1.6。右擊項目名,propertoes/java build path/libraries/右擊1.5,編輯,變成我們?nèi)笔〉?.6,見下圖






















馬克-to-win:(先變jre,否則這步?jīng)]法干,maven bug )【新版eclipse不用干】右擊項目名,新建一個Source Folder(注意不是普通的folder),src/main/java,

經(jīng)過一番改變,我們的項目變成如下的干凈的空項目。















馬克-to-win:觀察一下項目目錄下的.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都會被復制到web-inf目錄下。


馬克-to-win:在src/main/java目錄下建立一個package為com.mark,之后建立類HelloWorld作為Servlet。

為了導包,在pom.xml中加入:

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>


立即項目中加入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應用,里面有我們的servlet。把他手動拷貝到tomcat服務器的 webapps目錄下,啟動tomcat,運行http://localhost:8080/helloweb4/servlet可以看到結(jié)果。




以上的過程生成war包,再自己拷貝過去太麻煩,如果能用到過去學過的技術就好了。那我們就看一下過去的一個項目?!拘掳鎒clipse以下都不用干,直接右擊jsp就運行,和原來一樣?!?br>


















右擊項目名/properties























馬克-to-win:所以只要按照這張圖做,我們的maven項目也能和過去一樣,本機自測項目還是非常方便,本機自測完成,代碼ok后,只要把war包給客戶就可以了。




馬克-to-win:現(xiàn)在把我們剛做的maven項目改一下。把Project Facet按照上圖改變一下(如果萬一有什么問題, 不要慌,在每個項目的.settings目錄下,有個org.eclipse.wst.common.project.facet.core.xml配置文件,如有問題可以手動改它)。把Project Facet改變后,多了一個過去的WebContent(查看底層的物理路徑也是這樣),現(xiàn)在我們就刪掉它,就保留現(xiàn)在的Webapp,新的截圖是:














上圖中有兩處src,一處是maven過去的src,一處是我們轉(zhuǎn)dynamic web project時生成的java resources,其實底層物理路徑是共同的一處。其實eclipse在做轉(zhuǎn)化的時候,根據(jù) .classpath文件中知道什么是Source folder。它就把Source folder變成了java resources,所以底層是一處。所以在這兩處的任意一處添加或改動文件效果是一樣的。

而且把deployment assembly也改一下。新的截圖是:





















馬克-to-win:當我還是像過去一樣,右擊某個jsp,(run on server),運行這個dynamic web application時,eclipse就會按照deployment assembly的意圖,把webapp目錄下的所有東西拷貝到D:\eclipseJee\.metadata\.plugins\ org.eclipse.wst.server.core\tmp2\wtpwebapps\helloweb5。注意上面的maven dependency是必須的根據(jù)實驗,否則jar包過不去。