maven中如何创建一个Web项目
创建一个Web项目:
马克- to-win:马克 java社区:防盗版实名手机尾号: 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,编辑,变成我们缺省的1.6,见下图
马克-to-win:(先变jre,否则这步没法干,maven bug )【新版eclipse不用干】右击项目名,新建一个Source Folder(注意不是普通的folder),src/main/java,
经过一番改变,我们的项目变成如下的干净的空项目。
马克-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可以看到结果。
以上的过程生成war包,再自己拷贝过去太麻烦,如果能用到过去学过的技术就好了。那我们就看一下过去的一个项目。【新版eclipse以下都不用干,直接右击jsp就运行,和原来一样。】
右击项目名/properties
马克-to-win:所以只要按照这张图做,我们的maven项目也能和过去一样,本机自测项目还是非常方便,本机自测完成,代码ok后,只要把war包给客户就可以了。
马克-to-win:现在把我们刚做的maven项目改一下。把Project Facet按照上图改变一下(如果万一有什么问题, 不要慌,在每个项目的.settings目录下,有个org.eclipse.wst.common.project.facet.core.xml配置文件,如有问题可以手动改它)。把Project Facet改变后,多了一个过去的WebContent(查看底层的物理路径也是这样),现在我们就删掉它,就保留现在的Webapp,新的截图是:
上图中有两处src,一处是maven过去的src,一处是我们转dynamic web project时生成的java resources,其实底层物理路径是共同的一处。其实eclipse在做转化的时候,根据 .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是必须的根据实验,否则jar包过不去。