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目录的问题了。
分享到:
相关推荐
如果你使用的是 Eclipse for J2EE,你需要单独安装 m2eclipse 插件,可以通过在线更新站点完成:http://m2eclipse.sonatype.org/sites/m2e。 **3. Maven 设置** 在 IDE 中,通过 `Window -> Preferences` 输入 ...
2. 创建项目结构:标准的Maven Webapp项目结构通常包含以下几个目录: - `src/main/java`:存放Java源代码 - `src/main/resources`:存放资源文件,如配置文件 - `src/main/webapp`:存放Web应用相关的静态文件和...
这篇博客“Eclipse+Maven创建webapp项目集成jetty服务器”将指导你如何将这些工具结合在一起,创建一个可以快速运行和调试的Web应用环境。 首先,让我们详细了解一下每个组件: 1. **Eclipse**:Eclipse是一款强大...
标题“IntelliJ IDEA 12 配置webapp项目和导入Eclipse工程”指的是一个教程,讲述了如何在IntelliJ IDEA 12版本中配置Web应用程序项目,并且从Eclipse环境中导入已有的工程。这个过程对于开发者来说至关重要,因为...
2. **创建项目**:在命令行中,使用`mvn archetype:generate`命令,并指定对应的archetype id,如`maven-archetype-webapp`,然后按照提示输入项目信息,如groupId、artifactId和version。 3. **编译与运行**:生成...
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开发...
1.了解Web工程概念及与传统软件工程的区别 2.理解WebApp的概念、特点和开发过程 3.掌握WebApp的分析、设计和测试方法 4.掌握WebApp综合开发方法及课程设计过程
C# Webapp的开发中,表示层主要负责用户交互,使用ASP.NET技术如ASP.NET MVC或ASP.NET Core来创建动态网页。业务逻辑层处理应用程序的核心功能,通过C#编写服务类实现业务规则。数据访问层则与数据库进行交互,例如...
在Eclipse中创建Java EE Web工程是开发基于Java的Web应用程序的重要步骤。这个过程涉及到配置开发环境、设置项目属性以及创建必要的文件结构。下面将详细解释如何在Eclipse中进行这些操作。 首先,确保你已经安装了...
QtWebApp是一款基于Qt框架的开源库,它使得开发者能够在C++环境中轻松地创建Web应用程序。这个库的核心功能是将HTTP服务器与Qt应用程序集成,使得用户可以通过Web浏览器与本地应用程序进行交互。QtWebApp在设计时...
### Maven 创建 Web 工程详解 #### 一、前言 在现代软件开发过程中,构建工具扮演着极其重要的角色。Maven 是一款流行的自动化构建工具,它不仅简化了项目的构建过程,还为 Java 应用程序提供了标准化的构建生命...
2. **CSS样式**:虽然在提供的文件列表中没有直接的CSS文件,但通常WebApp会有一个或多个CSS文件来控制页面的外观和布局。`women_files`可能包含这些CSS文件,或者CSS代码被内联在HTML文件中。理解CSS选择器、盒模型...
training/webapp镜像,方面一些内网用户无法直接pull镜像时下载: 使用方法: docker load -i training-webapp.tar.gz
基于jasper report 6.1.1版本的demo-webapp做了功能修改和完善,包括以下功能: 1、支持普通报表、表单、子报表、交叉表、图表的html预览、导出和服务端打印 2、支持flash报表预览 3、解决pdf导出中文乱码问题 4、...
一、创建工程 1.首先新建一个springboot的war工程,并且将外部的Tomcat整合进我们的idea中,我们使用自己Tomcat,不再使用springboot嵌入式的 一个常规的web工程,在src/main目录下都会有一个webapp目录,但是我们...
在现代Web应用开发中,组件化开发已经成为一种主流的方式,尤其在构建复杂、可复用且易于维护的WebApp时。本资源“组件方式开发webApp源码”提供了一个完整的项目示例,让我们深入探讨一下这个主题。 首先,我们要...
Qt是一个强大的跨平台应用程序开发框架,而QtWebApp是其一个扩展,专门用于创建基于Web的应用程序,包括HTTP服务器。下面我们将详细讲解这个过程。 首先,确保你已经安装了Qt开发环境,并且包含了QtWebApp模块。...
3. 层次结构:通过大小、颜色、位置等视觉元素创建层次感,引导用户的注意力流向。 4. 空白区域:合理使用空白区域,可以提高内容的可读性和整体美感。 5. 对齐方式:内容和元素应有明确的对齐关系,增强视觉秩序...
2. 创建WebView:在布局文件中添加WebView元素,并在Java代码中通过findViewById获取引用。 3. 加载网页:调用WebView的`loadUrl()`方法加载远程或本地的HTML内容。 三、JavaScript与Android交互 1. ...