现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可以部署在Jetty服务器上,以下是调试过程。首先新建一个Maven的Web 项目,可以参考:Maven学习笔记-04-Eclipse和Maven集成

一.开发环境

Java: JDK7+

Eclipse: Eclipse Java EE IDE for Web Developers ,Version:Luna Release (4.4.0)

Maven: 3.2.5

Tomcat: 7+

二. 配置Tomcat用户

   Tomcat7和8的配置用户权限是一样的,更多可以参考官方文档(http://tomcat.apache.org/)的说明。此外配置独立服务器还要修改Tomcat的tomcat-user.xml文件,把用户权限加进去。

 <role rolename="manager-gui"/>
 <role rolename="admin-gui"/>
 <user password="admin" roles="manager-gui,admin-gui,manager-script" username="admin"/>

  其中manager-gui和admin-gui是Tomcat的管理界面,manager-script指的就是maven插件可以访问的用户权限规则。如下图所示:

  然后就可以进入Tomcat的管理页面了。

三. 在pom.xml文件中添加Tomcat插件

  Tomcat7可以参考在官方文档(http://tomcat.apache.org/maven-plugin-2.2/)中关于maven插件的配置。Tomcat插件网页:http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/run-mojo.html

 <build>

         <pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
</configuration>
</plugin> <plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/xpxiaowuApp</path>
<username>admin</username>
<password>admin</password>
</configuration>
</plugin> </plugins>
</pluginManagement> </build>

在第19行,Tomcat插件使用的端口是8080, Web App在Tomcat中的部署地址  xpxiaowuApp。

三.运行Tomcat7的Maven插件

以上步骤配置好后,在命令行输入命令:

mvn tomcat7:run

如果一切顺利,会出现一下提示。

D:\workspace_maven>mvn tomcat7:run
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building xpxiaowuApp 0.0.-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ xpxiao
wuApp >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xpxiaowuAp
p ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
. build is platform dependent!
[INFO] Copying resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xpxiaowuApp --- [INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ xpxiaowuApp <<<
[INFO]
[INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ xpxiaowuApp ---
[INFO] Running war on http://localhost:8080/xpxiaowuApp
[INFO] Using existing Tomcat server configuration at D:\workspace_maven\target\tomcat
[INFO] create webapp with contextPath: /xpxiaowuApp
五月 , :: 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-bio-8080"]
五月 , :: 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Tomcat
五月 , :: 下午 org.apache.catalina.core.StandardEngine startInternal 信息: Starting Servlet Engine: Apache Tomcat/7.0.
五月 , :: 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]

  在浏览器中输入 http://localhost:8080/xpxiaowuApp/ ,可以看到欢迎页面。

注意: 实验证明以上步骤在Tomcat8中同样配置成功。

使用maven 的tomcat8插件,pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion> <groupId>com.dxtd</groupId>
<artifactId>monitor</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <name>monitor Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url> <properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-</maven.compiler.encoding> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.</version>
</dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.</version>
</dependency> <dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version> </dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat8-maven-plugin</artifactId>
<version>3.0-r1655215</version>
<configuration>
<!-- 可以灵活配置工程路径 -->
<path>/monitor</path>
<!-- 可以灵活配置端口号 -->
<port></port>
</configuration>
</plugin>
</plugins>
</build> <pluginRepositories>
<pluginRepository>
<id>alfresco-public</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
</pluginRepository>
<pluginRepository>
<id>alfresco-public-snapshots</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>beardedgeeks-releases</id>
<url>http://beardedgeeks.googlecode.com/svn/repository/releases</url>
</pluginRepository>
</pluginRepositories> </project>

  然后运行命令

mvn tomcat8:run

四. 在pom.xml文件中添加Jetty6插件

1 Jetty可以参考官方文档( http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html)

 <plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId> </plugin>

  以上步骤配置好后,在命令行输入命令:

mvn jetty:run

在浏览器输入 http://127.0.0.1:8080/xpxiaowuApp/index.html 就可以访问项目了。

2 设置jetty(maven插件maven-jetty-plugin)的端口 ,具体配置请查看官方文档:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#configuring-jetty-container,修改端口的配置如下。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.</modelVersion>
<groupId>com.xinping</groupId>
<artifactId>TestWeb</artifactId>
<version>0.0.-SNAPSHOT</version>
<packaging>war</packaging> <!-- 为整个项目统一指定字符集 -->
<properties>
<project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
</properties> <build>
<!-- 打包的war名称设置 -->
<finalName>TestWeb</finalName>
 <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>9.0.6.v20130930</version>
                    
                     <configuration>
                        <httpConnector>
                                <port>9090</port>
                        </httpConnector>
                        <webAppConfig>
                            <contextPath>/${project.artifactId}</contextPath>
                        </webAppConfig>
                    </configuration>    
               </plugin>                 
            </plugins>
        </pluginManagement> </build>
</project>

注意:maven集成jetty插件后会出现问题,maven jetty 启动后,不能修改静态文件,js,css,html

1  现象
运行 mvn jetty:run 以后,发现静态资源文件修改后无法保存,IDE 提示 “请求的操作无法在使用用户映射区域打开的文件上执行”。

2 原因

如果NIO被支持的话,Jetty会使用内存映射文件来缓存静态文件,其中包括.js文件。在Windows下,使用内存映射文件会导致文件被锁定。解决方案是不使用内存映射文件来做缓存。

3 解决方案:

版本:jetty 9.0.6

1)找到 .m2\org\eclipse\jetty\jetty-webapp\9.0.6.v20130930中,找到 jetty-webapp-9.0.6.v20130930.jar,解压缩这个文件, jetty-*.jar 中 org/mortbay/jetty/webapp/webdefault.xml 文件

修改

<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value>
</init-param>

<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>

2)将webdefault.xml文件放在maven web 的pom同级目录

3)修改maven中<configuration>属性,在属性中添加如下配置:

    <build>
    <finalName>oneWeb1</finalName>
    
     <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>9.0.6.v20130930</version>
                    
                     <configuration>
                        <httpConnector>
                                <port>9090</port>
                        </httpConnector>
                        <webAppConfig>
                            <contextPath>/${project.artifactId}</contextPath>
                            <defaultsDescriptor>webdefault.xml</defaultsDescriptor>                            
                        </webAppConfig>
                    </configuration>
    
               </plugin>
                 
            </plugins>
        </pluginManagement>
        
  </build>

五 在Eclipse运行Maven命令

在 Eclipse中点击Maven的Web项目,右键选择Run As => Maven Build

在配置窗口中Goals列中填写Maven命令: jetty:run , 保存配置,然后运行这个配置。

此时查看Eclipse的console控制台,会给出以下提示信息:

六 配置插件仓库

<!-- 配置插件仓库 -->
    <repositories>
         <!-- restlet 插件仓库 -->
     <repository>
            <id>maven-restlet</id>
            <name>Public online Restlet repository</name>
            <url>http://maven.restlet.org</url>
        </repository>
        
       <repository>
            <id>maven2-repository.java.net</id>
            <name>Java.net Repository for Maven</name>
            <url>http://download.java.net/maven/2/</url>
        </repository>
        
        <repository>
            <id>oschina Releases</id>
            <name>oschina Releases</name>
            <url>http://maven.oschina.net/content/groups/public</url>
        </repository>
        <repository>
            <id>nexus-osc</id>
            <name>Nexus osc</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
        </repository>
        <repository>
            <id>nexus-osc-thirdparty</id>
            <name>thirdparty</name>
            <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
        </repository>         <!-- jesery插件仓库 -->
        <repository>
            <id>snapshot-repository.java.net</id>
            <name>Java.net Snapshot Repository for Maven</name>
            <url>https://maven.java.net/content/repositories/snapshots/</url>
            <layout>default</layout>
        </repository>     </repositories>   

参考资料:

Tomcat7插件部署

http://blog.csdn.net/binyao02123202/article/details/17793233

Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试的更多相关文章

  1. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  2. Maven学习笔记之第一个Maven项目(Linux)

    Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...

  3. maven学习笔记--window平台下的安装和一些基本的配置

    maven官网:http://maven.apache.org/ 系统要求如下: 安装及配置步骤 (1)下载:到Maven 的官网上去下载windows版本的Maven的安装包!下载对应的zip 格式 ...

  4. Maven学习笔记(一)—— Maven基础

    一.Maven介绍 1.1 什么是maven? Maven是apache下的一个纯Java开发的开源项目,它是一个项目管理工具,使用maven对Java项目进行构建.依赖管理. 1.2 什么是项目构建 ...

  5. Maven学习笔记【1】 -- Maven简介

    本文主要讲Maven的基础知识. 一 什么是Maven? Maven是一个项目管理工具.Maven提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档.最强大的功能就是能够自动下 ...

  6. Maven学习笔记(1)之安装Maven

    此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...

  7. maven学习笔记(定制一个Web项目)

    创建web项目: mvn archetype:generate -DgroupId=cn.net.comsys.ut4.simpleweb -DartifactId=simple-web -Dpack ...

  8. java学习笔记:Eclipse打开现有项目

    初学JAVA,觉得困难重重. 多年来,已经习惯了微软系列的VS,现在使用Eclipse,觉得差别很大. 比如打开一个现有项目.并没有什么所谓的项目文件,如*.sln,*.cproj什么的.那怎么打开? ...

  9. (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -&g ...

随机推荐

  1. 一款超级炫酷的编辑代码的插件 Power Mode

    今天偶尔发现了一款比较炫酷的插件,想让你们看看效果 打代码的时候会有非常炫酷的效果哟 因为我用的编辑器是VScode,所以我也只搞了搞VSCode中使用Power Mode的方法,如果你用的是别的编辑 ...

  2. 【图解】Web前端实现类似Excel的电子表格

    本文将通过图解的方式,使用纯前端表格控件 SpreadJS 来一步一步实现在线的电子表格产品(例如可构建Office 365 Excel产品.Google的在线SpreadSheet). 工具简介: ...

  3. Android系统启动流程(一)解析init进程启动过程

    整体流程大致如下:     1.init简介 init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等.in ...

  4. Android View体系(四)从源码解析Scroller

    在Android View体系(二)实现View滑动的六种方法这篇文章中我们讲到了用Scroller来实现View的滑动,所以这篇文章我们就不介绍Scroller是如何使用的了,本篇就从源码来分析下S ...

  5. Django之验证

    1. 滑动验证码补充说一下 极验科技:https://docs.geetest.com/install/deploy/server/python#下载SDK按照人家的实例操作即可 1.pip inst ...

  6. 安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details"错误.原因是启动"VisualSVN Server"失败

    安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server ...

  7. Centos7使用Docker安装Gogs搭建git服务器

    gihub地址:https://github.com/gogs/gogs gogs官网:https://gogs.io/ gihub官方docker安装gogs方法:https://github.co ...

  8. Hacker News API

    Hacker News API中的URI和版本 API都由https://hacker-news.firebaseio.com提供. 单个条目信息 故事,评论,招聘,问答,以及投票都叫做条目.它们有各 ...

  9. JavaScript中数组的增删改查以及应用方式

    数组的增加方法 1.push()方法向数组中末尾添加一个元素,原数组改变 var arr=[1,2,3,4]; var arr1=arr.push(6); console.log(arr);//打印出 ...

  10. Go学习笔记03-结构控制

    目录 条件语句 循环语句 条件语句 条件语句用 if 关键字来判定条件,如: func bounded(v int) int { if v > 100 { return 100 } else i ...