maven一波流(5)——如何部署maven web项目-阿里云开发者社区

开发者社区> 程序员大阳> 正文

maven一波流(5)——如何部署maven web项目

简介: maven一波流(5)——如何部署maven web项目
+关注继续查看

编写一个servlet用于测试

为了测试部署之后项目可用,我们至少得写一个servlet。


在src/mian/java下新建包:com.panda.webdemo.servlet,并在该包新建类:HelloServlet,代码如下:


@WebServlet("/hello")

public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

   public HelloServlet() {

       super();

   }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 response.getWriter().write("Hello World");

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 doGet(request, response);

}

}


注意该servlet通过注解@WebServlet标注,所以访问/hello即指向该Servlet。


如果访问成功,则输出Hello World。


部署方法1——手工打包、手工部署

最简单的,直接右键单击项目-run as-maven install,控制台输出:


[INFO] --- maven-install-plugin:2.4:install (default-install) @ webdemo ---

[INFO] Installing D:\\Workspace\\EclipsePhoton\\webdemo\\target\\webdemo.war to G:\\MavenRepo\\com\\panda\\webdemo\\0.0.1-SNAPSHOT\\webdemo-0.0.1-SNAPSHOT.war


将webdemo/target/webdemo.war手工拷贝到tomcat下webapps下,启动tomcat,访问如下地址,注意我的tomcat端口设为默认的80,所以可以不用写端口号。


http://127.0.0.1/webdemo/hello

1

打开浏览器,在浏览器地址栏输入上述地址,网页显示:


Hello World

1

大功告成。


但是每次打包都需要手工拷贝部署也太麻烦了,尤其是在开发阶段,这个没关系,maven通过插件提供了更快捷的部署方式。


部署方法2——通过maven-jetty-plugin插件部署

首先添加插件,添加方式很简单,在pom.xml中添加一个插件坐标即可,maven会自动将坐标对应插件弄到项目中来。


<build>

 <finalName>webdemo</finalName>

 <plugins>

  <plugin>

   <groupId>org.mortbay.jetty</groupId>

   <artifactId>jetty-maven-plugin</artifactId>

   <version>8.1.15.v20140411</version>

   <configuration>

    <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>

    <webApp>

     <!-- 注意,如果不配置该参数,则访问地址为127.0.0.1:8080/hello -->

     <!-- 配了,则访问:127.0.0.1:8080/webdemo/hello  -->

     <contextPath>/webdemo</contextPath>

    </webApp>

    <connectors>

     <connector

      implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">

      <!-- 指定端口 -->

      <port>8080</port>

      <maxIdleTime>60000</maxIdleTime>

     </connector>

    </connectors>

   </configuration>

  </plugin>

 </plugins>

</build>


然后选中项目,右击项目名-Run as-Maven Build…,在项目配置窗口中的Goals项输入:jetty:run,然后点击Run按钮运行。


然后就不幸报错了,这个错原因是端口被占用,


Exception in thread "Shutdown" java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspApplicationContextImplException in thread "Shutdown" java.lang.NoClassDefFoundError: org/apache/jasper/runtime/JspApplicationContextImpl

1

仔细查看控制台日志发现[INFO] Stopped SelectChannelConnector@0.0.0.0:8080,说明应该是8080被占用了,OK,我习惯使用TCPView直接干掉8080口进程。


然后再次Run as-Maven Build,注意因为之前已经配置过插件,所以点击后直接运行了。


控制台此次输出,说明启动成功。


[INFO] Started SelectChannelConnector@0.0.0.0:8080

[INFO] Started Jetty Server


在浏览器地址栏输入:http://127.0.0.1:8080/webdemo/hello,页面显示Hello World。


大功告成。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10074 0
web项目的部署
这几天在学习的过程中,时常出现编写好Servlet之后,在把项目部署之后显示404或者500的问题;在此记下摸索出来的解决方案\ 项目部署不成功,主要存在的问题有以下几个方面 1:server.xml配置问题:部署子项目的时候,需要在server.
1287 0
webpack, react项目中利用外部JS库提升效率
前言 现在很多前端项目在构建时,都是一个vendor 公共JS文件和和一个app.js的文件,会造成一些弊端。 在项目的开发过程中,修改任何一个地方,都会触发JS的全局构建,需要等待非常久,长久下来大大的降低了开发效率。
10428 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13882 0
【maven 报错】maven项目执行maven install时报错Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
在使用maven新建的web项目中,执行   执行如上的这两个操作,报错: 1 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
2727 0
+关注
程序员大阳
努力努力再努力
588
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载