现在最新的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. getRealPath函数编译报错问题

    ServletActionContext.getRequest().getRealPath("");函数虽然已被淘汰,但在获取服务器绝对路径时仍有使用.关于 ServletActi ...

  2. 机器学习是万能的吗?AI落地有哪些先决条件?

    机器学习是万能的吗?AI落地有哪些先决条件? https://mp.weixin.qq.com/s/9rNY2YA3BMpoY8NQ_rVIjQ 1.引言 入门机器学习或从事其相关工作前,不知道你思考 ...

  3. loadrunner 结果分析-loadrunner结果分析

    结果分析-loadrunner结果分析 by:授客 QQ:1033553122 百度网盘分享链接: 烦请 复制一下网址到浏览器中打开,输入密码提取 链接: http://pan.baidu.com/s ...

  4. mysql的高级特性-存储过程

    定义: 存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称来执行这些sql语句命令. 语法: DELIMITER // 声明语句结束符,用于区分; CEATE PROCED ...

  5. Python鸢尾花分类实现

    #coding:utf-8 from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_s ...

  6. SpringBoot项目在新电脑上的配置运行,包括JDK+MAVEN+Git+SpringBoot配置等

    该教程记录了我在一台新的电脑上安装IDEA,配置JAVA+MAVEN+GIT+SpringBoot项目的过程,最终完成了项目的运行. 一.若想利用IDEA的git工具从GitHub或者码云上面获取项目 ...

  7. C#语言————第二章 C#语言快速热身

    第二章    C#语言快速热身 ***********一.选择结构**************** 1:if选择结构与java的if选择结构语法完全相同 2:switch选择结构 ①:常量表达式的值可 ...

  8. SMP多核启动

    在 Linux系统中,对于多核的ARM芯片而言,在Biotron代码中,每个CPU都会识别自身ID,如果ID是0,则引导Bootloader和 Linux内核执行,如果ID不是0,则Biotron一般 ...

  9. Cache 和 Buffer 都是缓存,主要区别是什么?【转】

    作者:Towser 链接:https://www.zhihu.com/question/26190832/answer/32387918 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商 ...

  10. Linux 小知识翻译 - 「内核(kernel)」

    上次介绍了Linus Torvalds, 这次介绍他开发的「内核」. 经常听人提到「Linux kernel」,但如果被问到「kernel究竟是什么?」的话,会出乎意料的觉得难以回答. 那么,kern ...