一、Web项目结构
1、显式指定Web项目打包方式为war:
 

2、默认目录
根据“约定大于配置”的规则,Web项目的类及资源文件默认位置为src/main/java和src/main/resources,测试类和测试资源文件默认位置src/test/java和src/test/resources,Web资源目录位于src/main/webapp。
Maven项目结构没有War包中的lib目录,因为依赖都配置在POM中,Maven在用War方式打包的时候会根据POM配置从本地仓库复制相应的Jar文件。
 
3、war包名称——finalName元素配置
超级POM中设定的值为${project.artifactId}-${project.version}.war。
部署测试环境或最终产品环境,需要简洁的war包,需要配置finalName元素。
 
二、使用jetty-maven-plugin进行测试
1、原理
传统的Web测试方法要求编译、测试、打包及部署,这往往消耗很多时间,jetty-maven-plugin能够帮助我们节省时间,它能够周期性地检查项目内容,发现变更后自动更新到内置的Jetty Web容器中。即,帮我们省去了打包和部署的步骤。
2、配置
webappConfig元素下的contextPath表示项目部署后的上下文路径,上述配置/test表示用户可以通过http://hostname:port/test/访问该应用。
3、启动jetty-maven-plugin
默认情况下,只有org.apache.maven.plugins和org.codehaus.mojo两个gounpId下的插件才支持简化的命令行应用,即可运行mvn help:system。但mvn jetty:run就不行。
为了能够在命令行直接运行mvn jetty:run,用户需要配置settings.xml如下:
然后可运行:
  1. mvn jetty:run
 
或者指定端口:
  1. mvn jetty:run -Djetty.port=9999
停止测试运行,可Ctrl+C即可。
 
三、使用Cargo实现自动化部署
 
cargo-maven2-plugin和jetty-maven-plugin的功能看起来相似,但是目的不同。jetty-maven-plugin主要用来帮助日常的快速开发和测试,而cargo-maven2-plugin主要服务于自动化部署。
使用cargo,只需要一条简单的maven命令,就可以构建项目并部署到Web容器中,进行功能测试。
1、部署至本地Web容器
Cargo支持两种本地部署的方式,分别为standalone模式和existing模式。在stsndalone模式中,Cargo会从web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成。
而在existing模式中,用户需要指定现有的web容器配置目录,然后Cargo会直接使用这些配置并将应用部署到其对应的位置。
如standalone模式的配置样例:
 
注意,与jetty一样,cargo-maven2-plugin的groupId是org.codehaus.cargo,不属于官方的两个Maven插件groupId,若使用简化的命令行则需要在settings.xml中pluginGroup元素中配置。
然后运行以下命令:
  1. mvn cargo:start
 
Cargo默认Web容器监听8080端口,也可以通过如下配置进行修改:
 
existing模式:
需要将上述Configuration子元素type的值为existing,而对于的home子元素表示现有的Web容器目录。运行后,可在Tomcat的webapps子目录看到被部署的Maven项目。
 
2、部署至远程Web容器
除了让Cargo直接管理本地Web容器外,还可以让Cargo部署应用至远程的正在运行的Web容器,前提是拥有该容器的相应权限。
tomcat中的用户权限可参看如下配置: 
  1. <role rolename="tomcat"/>
  2.   <role rolename="role1"/>
  3.   <role rolename="admin"/> 
  4.   <role rolename="manager-gui"/>
  5.   <role rolename="manager-script"/>
  6.   <role rolename="manager"/>  
  7.   <user username="admin" password="admin123" roles="admin,manager,manager-script,manager-gui"/>
 
然后运行命令如下:
  1. mvn cargo:redeploy
若容器已经部署了当前应用,Cargo会先将其卸载,然后重新部署。
 
注意,若要部署在远程机器,则需要注意以下几点:
1、远程机器防火墙要关闭
如红帽Linus系列使用如下命令:
  1. systemctl stop firewalld
 
2、远程机器的Tomcat要配置manager用户,且要有manager-script角色
参考上述tomcat中的用户权限配置,否则可能会有如下错误:
  1. [ERROR]Failed to execute goal org.codehaus.cargo:cargo-maven2-plugin:1.6.1:redeploy (default-cli) on project manage-admin:Executiondefault-cli of goal org.codehaus.cargo:cargo-maven2-plugin:1.6.1:redeploy faile
  2. d:Failed to redeploy [H:\workspace\QianduManage\manage-admin\target\manage-admin.war]:The username you provided is not allowed to use the text-based TomcatManager(error 403):Server returned HTTP response code
  3. :403for URL: http://localhost:8080/manager/text/list -> [Help 1]
  4. [ERROR]
  5. [ERROR]To see the full stack trace of the errors, re-run Maven with the -e switch.
  6. [ERROR]Re-run Mavenusing the -X switch to enable full debug logging.
  7. [ERROR]
  8. [ERROR]For more information about the errors and possible solutions, please read the following articles:
  9. [ERROR][Help1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
 
 
3、远程机器的Tomcat允许其他机器登录manager页面

需要在Tomcat目录的conf/Catalina/localhost/下新增文件:

manager.xml,内容如下:

  1. <Context privileged="true" antiResourceLocking="false"
    docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
    </Context>

 
4、plugin/configuration/configuration/properties需要配置cargo.hostname域名,否则默认localhost(无论cargo.tomcat.manager.url如何配置)
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.6.1</version>
<configuration>
<container>
<containerId>tomcat8x</containerId>
<type>remote</type>
</container>
<configuration>
<type>runtime</type>
<properties>
<cargo.hostname>10.110.2.161</cargo.hostname>
<cargo.remote.username>admin</cargo.remote.username>
<cargo.remote.password>admin123</cargo.remote.password>
<cargo.tomcat.manager.url>http://10.110.2.161:8080/manager</cargo.tomcat.manager.url>
</properties>
</configuration>
</configuration>
</plugin>
 
 
 
 
 
 
 

《Maven实战》笔记-8-构建部署Web项目的更多相关文章

  1. Ant + Jenkies +Tomcat 自动构建部署Web项目

    前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...

  2. eclipse+maven远程(自动)部署web项目到tomcat

    [转自] http://blog.csdn.net/dhmpgt/article/details/11197995 eclipse集成maven后可以用maven命令把web项目自动部署到tomcat ...

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

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

  4. Maven实现项目构建直接部署Web项目到Tomcat

    Maven实现项目构建直接部署Web项目到Tomcat配置如下: 1.Tomcat的用户及权限配置:在conf目录下,找到tomcat-users.xml,添加manager权限的用户. <ro ...

  5. [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  6. 使用maven构建一个web项目

                          使用maven构建一个web项目     首先建立一个maven项目(关于环境配置上节有详细过程): 1)-->右键new,-->project ...

  7. 开发过程使用Tomcat Maven插件持续快捷部署Web项目

    我在平时工作中部署Web项目到测试服务器上的Tomcat时用的是Hudson.Hudson本身已经跟SVN.Git.Maven集成并且支持添加各种插件.但如果使用Hudson,我需要配置两个任务:一个 ...

  8. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...

  9. 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404

     maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...

随机推荐

  1. CodeForces - 1025D: Recovering BST (区间DP)

    Dima the hamster enjoys nibbling different things: cages, sticks, bad problemsetters and even trees! ...

  2. leetcode_sql_1,176,177

    1.176题目,Second Highest Salary,https://leetcode.com/problems/second-highest-salary/#/description Writ ...

  3. 利用python进行数据分析—数据清洗记录3,map,apply,

      社会心态调查报告 导语: 时代决定心态,心态映照时代.社会心态产生于社会个体心理,又以整体的形态存在,进而影响着每个社会成员的社会价值取向和行为方式,影响着国家经济政治和社会发展大局.良好的社会心 ...

  4. Spark入门实战系列

    转自:http://www.cnblogs.com/shishanyuan/p/4699644.html 这一两年Spark技术很火,自己也凑热闹,反复的试验.研究,有痛苦万分也有欣喜若狂,抽空把这些 ...

  5. mac下完全卸载mysql的方法

    sudo rm /usr/local/mysqlsudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOMsudo ...

  6. Eclipse jar包源码下载

    在使用intelliJ的时候,可以在IDE中直接下载jar包: Eclipse也可以!就是插件Java Source Attacher 这个插件是放在eclipse安装目录的dropins目录下.重启 ...

  7. bzoj 4827 [Hnoi2017]礼物——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子就是 \sum_{i=0}^{n-1}(a[ i ] - b[ i+k ] + c ...

  8. winrm service

    今天看脚本忽然发现一个服务,叫winRM服务,这是个PowerShell的远程管理.开启它可以很大程度的方便用PowerShell操控! 下面是我找到的一些资料: 在Linux中,我们可以使用安全的S ...

  9. 并集(union和union all的区别)、交集、差集、全连接

    一.并集 Union因为要进行重复值扫描,所以效率低.如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致): 如果我们需 ...

  10. websocket之三:Tomcat的WebSocket实现

    Tomcat自7.0.5版本开始支持WebSocket,并且实现了Java WebSocket规范(JSR356 ),而在7.0.5版本之前(7.0.2版本之后)则采用自定义API,即WebSocke ...