`

m2e创建webapp工程

 
阅读更多

1:安装m2e的方法网上一大堆,就不说了,现在可以在eclipse的市场中搜索maven,也可以在

installations new software中安装普通eclipse插件安装方式进行安装,地址为:m2e releases repository - http://download.eclipse.org/technology/m2e/releases

 

2:然后进行maven相关的配置,最好用自己本地安装的maven,不要用eclipse自带的。

 

3:新建maven工程,在Select an Archetype时,选择maven-archetype-webapp,然后就填入一些相关坐标点下一步就OK了。

 

4:如果在第三步中出现错误,比如类似:

Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:RELEASE from any of the configured repositories.

Could not resolve artifact org.apache.maven.archetypes:maven-archetype-webapp:pom:RELEASE

Failed to resolve version for org.apache.maven.archetypes:maven-archetype-webapp:pom:RELEASE: Could not find metadata org.apache.maven.archetypes:maven-archetype-webapp/maven-metadata.xml in local (C:\Users\scmroad\.m2\repository)

Failed to resolve version for org.apache.maven.archetypes:maven-archetype-webapp:pom:RELEASE: Could not find metadata org.apache.maven.archetypes:maven-archetype-webapp/maven-metadata.xml in local (C:\Users\scmroad\.m2\repository)

 

等信息,那就检查一下网络,比如代理是否好用等,最新的eclipse juno已经会自动查找本机IE的代理设置,不用自己再手动设置了,而且最新的m2e插件在连接远程仓库时也会直接先走eclipse的newwork中的代理设置,即使自己本地的settings.xml中没有设置proxy。

最好能找一个不用代理环境的外网,会很少出问题,随便提一下,本机的maven如果跑命令行模式,和eclipse无关,这时如果有网络代理,必须要设置settings.xml文件中的proxy了,而且好像其中的username和password不支持@和,等特殊符号。

 

5:完成工程的建立以后会发现目录结构如下:

举例工程信息如下:

mvn archetype:create

   -DgroupId=com.burlesontech.sw

   -DartifactId=webapp

   -DarchetypeArtifactId=maven-archetype-webapp

则:

You project will now have the following structure:

 

sw

webapp

src

main

resources

webapp

WEB-INF

web.xml

index.jsp

pom.xml

.project

 

 

你会奇怪这结构不符合web目录习惯啊,明显没有WEB-INF/lib目录,其实JAVAEE规范要求的WEB应用目录如下:

按照 Java EE 规范的规定,一个典型的Web 应用程序有四个部分: 

1. 公开目录 

2. WEB-INF/web.xml 文件,发布描述符(必选) 

3. WEB-INF/classes 目录,编译后的Java 类文件(可选) 

4. WEB-INF/lib 目录,Java 类库文件(*.jar)(可选)

 

注意后两项是“可选”的,人家没要求一定要有lib,甚至classes目录,这些在容器或应用启动的时候指定classpath就行了,只是好多web容器默认自动加载了这两个目录为classpath中的一部分了。

所以人家maven不建立lib目录也没什么问题,但还是不习惯,别着急。

 

先按照正常的maven的目录把现在还缺少的目录建立完整,如下:

src/main/java

src/main/resources

src/test/java

src/test/resources

 

在src/main/java目录中随便建立一个servlet

如下:

 

package org.coffeesweet.foo.web;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class Hello extends HttpServlet {

private static final long serialVersionUID = -3696470690560528247L;

 

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

out.print("<html><body>");

out.print("<h1> HELLO WORD!");

out.print("</body></html>");

}

}

 

web.xml中别忘了添加servlet映射(MAVEN默认建立的web.xml是2.3的,这里改成2.5了,注意3.0的需要JAVA7支持,不需要在web.xml理配置servlet映射,直接在servlet类上写注解就行了):

 

<!DOCTYPE web-app PUBLIC

 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

 "http://java.sun.com/dtd/web-app_2_5.dtd" >

 

<web-app>

  <display-name>Archetype Created Web Application</display-name>

  <servlet>

  <servlet-name>Hello</servlet-name>

  <servlet-class>org.coffeesweet.foo.web.Hello</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>Hello</servlet-name>

  <url-pattern>/Hello</url-pattern>

  </servlet-mapping>

</web-app>

 

 

 

pom.xml添加依赖:

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>2.5</version>

</dependency>

 

默认scope是compile,即:对于编译,测试,运行三种classpath都有效,理论上servlet-api在web/lib中可以没有,因为一般web容器都会自带,只需要在写代码时编译用一下,scope定义为:provided就行了,

这里为了做示例故意这么定义一下,感兴趣的可以改一下范围这个再试试。

 

这时执行maven clean package后发现在target的WEB-INF下自动新建了lib目录,并且将servlet-2.5.jar添加到该目录下了,打出来的war包里也有WEB-INF/lib目录了。

但在src下的webapp下面的WEB-INF里还是没有lib目录,也不影响了,只要打出来的包里有,web容器就会认了,所以MAVEN还是很智能的,在不需要的时候绝不多建,需要的时候自动建。

 

这时按照上面的提示将依赖修改成如下:

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>2.5</version>

    <scope>provided</scope>

</dependency>

即:修改了依赖范围成provided时,再执行mvn clean package后,target和war中的WEB-INF下面的lib又没有了。

 

从而证明,MAVEN的war插件还是很智能的,你不需要往容器添加额外jar的时候,它连lib目录都懒得生成了,你需要的时候,它会给你自动生成,不知道这个和plug的版本是否有关,留给大家实验吧,反正我得到

的结果是不需要像网上大家讲的那样还要利用eclipse自己的web工程功能来修改工程属性什么的,MAVEN自己就能搞定类的依赖和lib目录的问题了。


分享到:
评论

相关推荐

    maven创建webapp

    如果你使用的是 Eclipse for J2EE,你需要单独安装 m2eclipse 插件,可以通过在线更新站点完成:http://m2eclipse.sonatype.org/sites/m2e。 **3. Maven 设置** 在 IDE 中,通过 `Window -&gt; Preferences` 输入 ...

    maven创建webapp,所需库

    2. 创建项目结构:标准的Maven Webapp项目结构通常包含以下几个目录: - `src/main/java`:存放Java源代码 - `src/main/resources`:存放资源文件,如配置文件 - `src/main/webapp`:存放Web应用相关的静态文件和...

    Eclipse+Maven创建webapp项目集成jetty服务器

    这篇博客“Eclipse+Maven创建webapp项目集成jetty服务器”将指导你如何将这些工具结合在一起,创建一个可以快速运行和调试的Web应用环境。 首先,让我们详细了解一下每个组件: 1. **Eclipse**:Eclipse是一款强大...

    IntelliJ IDEA 12 配置webapp项目和导入Eclipse工程

    标题“IntelliJ IDEA 12 配置webapp项目和导入Eclipse工程”指的是一个教程,讲述了如何在IntelliJ IDEA 12版本中配置Web应用程序项目,并且从Eclipse环境中导入已有的工程。这个过程对于开发者来说至关重要,因为...

    maven-archetype-webapp-1.0.jar下载

    2. **创建项目**:在命令行中,使用`mvn archetype:generate`命令,并指定对应的archetype id,如`maven-archetype-webapp`,然后按照提示输入项目信息,如groupId、artifactId和version。 3. **编译与运行**:生成...

    Maven创建Java工程

    2. **创建子模块`mydemo-core`和`mydemo-web`** 在`mydemo`项目目录下,分别运行`mvn archetype:create -DgroupId=www.example.mydemo.core -DartifactId=mydemo-core`和`mvn archetype:create -DgroupId=...

    idea开发webapp 热部署

    idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发...

    webapp开发综合案例

    1.了解Web工程概念及与传统软件工程的区别 2.理解WebApp的概念、特点和开发过程 3.掌握WebApp的分析、设计和测试方法 4.掌握WebApp综合开发方法及课程设计过程

    C# Webapp C# WebappC# WebappC# Webapp

    C# Webapp的开发中,表示层主要负责用户交互,使用ASP.NET技术如ASP.NET MVC或ASP.NET Core来创建动态网页。业务逻辑层处理应用程序的核心功能,通过C#编写服务类实现业务规则。数据访问层则与数据库进行交互,例如...

    Eclipse JAVA EE 创建Web工程

    在Eclipse中创建Java EE Web工程是开发基于Java的Web应用程序的重要步骤。这个过程涉及到配置开发环境、设置项目属性以及创建必要的文件结构。下面将详细解释如何在Eclipse中进行这些操作。 首先,确保你已经安装了...

    QtWebApp应用例程

    QtWebApp是一款基于Qt框架的开源库,它使得开发者能够在C++环境中轻松地创建Web应用程序。这个库的核心功能是将HTTP服务器与Qt应用程序集成,使得用户可以通过Web浏览器与本地应用程序进行交互。QtWebApp在设计时...

    maven创建web工程

    ### Maven 创建 Web 工程详解 #### 一、前言 在现代软件开发过程中,构建工具扮演着极其重要的角色。Maven 是一款流行的自动化构建工具,它不仅简化了项目的构建过程,还为 Java 应用程序提供了标准化的构建生命...

    一个webapp

    2. **CSS样式**:虽然在提供的文件列表中没有直接的CSS文件,但通常WebApp会有一个或多个CSS文件来控制页面的外观和布局。`women_files`可能包含这些CSS文件,或者CSS代码被内联在HTML文件中。理解CSS选择器、盒模型...

    training/webapp镜像

    training/webapp镜像,方面一些内网用户无法直接pull镜像时下载: 使用方法: docker load -i training-webapp.tar.gz

    jasperreport 6.1.1 webapp demo 功能修改和完善 整个工程

    基于jasper report 6.1.1版本的demo-webapp做了功能修改和完善,包括以下功能: 1、支持普通报表、表单、子报表、交叉表、图表的html预览、导出和服务端打印 2、支持flash报表预览 3、解决pdf导出中文乱码问题 4、...

    Qt使用QtWebApp搭建Http服务器实现文件下载

    Qt是一个强大的跨平台应用程序开发框架,而QtWebApp是其一个扩展,专门用于创建基于Web的应用程序,包括HTTP服务器。下面我们将详细讲解这个过程。 首先,确保你已经安装了Qt开发环境,并且包含了QtWebApp模块。...

    IDEA创建SpringBoot的Web项目,并使用外部Tomcat(教学视频+源代码)

    一、创建工程 1.首先新建一个springboot的war工程,并且将外部的Tomcat整合进我们的idea中,我们使用自己Tomcat,不再使用springboot嵌入式的 一个常规的web工程,在src/main目录下都会有一个webapp目录,但是我们...

    组件方式开发webApp源码

    在现代Web应用开发中,组件化开发已经成为一种主流的方式,尤其在构建复杂、可复用且易于维护的WebApp时。本资源“组件方式开发webApp源码”提供了一个完整的项目示例,让我们深入探讨一下这个主题。 首先,我们要...

    webapp 页面交互与布局

    3. 层次结构:通过大小、颜色、位置等视觉元素创建层次感,引导用户的注意力流向。 4. 空白区域:合理使用空白区域,可以提高内容的可读性和整体美感。 5. 对齐方式:内容和元素应有明确的对齐关系,增强视觉秩序...

    Android应用程序之WebApp开发实战

    2. 创建WebView:在布局文件中添加WebView元素,并在Java代码中通过findViewById获取引用。 3. 加载网页:调用WebView的`loadUrl()`方法加载远程或本地的HTML内容。 三、JavaScript与Android交互 1. ...

Global site tag (gtag.js) - Google Analytics