笔记:Maven Web项目
- 生成Web项目模块
生成Web项目模板和生成其他项目的模板一致,差别是指定模板的类型,执行命令如下:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
命令结果:
输入 groupId、artifactId、version后 Maven 会生成 Web项目结构
- 项目POM配置
Web和其他项目的差别就是在打包格式,普通项目的打包格式为 JAR,而Web项目的打包格式为WAR,配置差异如下:
<packaging>war</packaging>
- 项目目录
目录路径 | 说明 |
src/main/java | Java 源代码目录 |
src/main/resources | 资源目录 |
src/main/filters | 资源过滤文件目录 |
src/main/config | 配置文件目录跟 |
src/main/webapp | Web 站点目录,必须WEB-INF子目录及WEB-INF子目录需要包含 web.xml配置文件 |
src/test/java | 测试代码目录 |
src/test/resources | 测试资源目录 |
src/test/filters | 测试资源过滤文件目录 |
pom.xml | Maven2 配置文件 |
- 打包WAR名称配置
默认打包WAR文件名称的设定规则值为 ${project.artifactId}-${project.version},生成的文件名过长,在部署后需要输入冗长的地址,因此我们需要名字更为简洁的war包,可以配置 finalName 元素来修改,配置如下:
<build>
<finalName>drsoft</finalName>
</build>
执行打包命令:
mvn clean package
命令结果:
- 自动部署至本地Web容器
可以使用Maven的插件来完成自动部署,Cargo 插件支持二种本地部署的方式,分别为 standalone 模式和existing 模式,在 standalone模式中,Cargo会从Web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建将清除目录;existing模式则用户需要指定现有的Web容器配置目录,然后Cargo会直接使用这些配置并将应用部署其对应位置。
- existing模式
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.6.2</version>
<configuration>
<container>
<!-- 容器唯一标识 -->
<containerId>tomcat8x</containerId>
<!-- Tomcat 安装路径 -->
<home>D:\Developers\apache-tomcat-8.0.39</home>
</container>
<configuration>
<!-- 部署类型 -->
<type>existing</type>
<!-- Tomcat 安装路径 -->
<home>D:\Developers\apache-tomcat-8.0.39</home>
</configuration>
</configuration>
</plugin>
- standalone模式
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.6.2</version>
<configuration>
<container>
<!-- 容器唯一标识 -->
<containerId>tomcat8x</containerId>
<!-- Tomcat 安装路径 -->
<home>D:\Developers\apache-tomcat-8.0.39</home>
</container>
<configuration>
<!-- 部署类型 -->
<type>standalone</type>
<!-- Tomcat 安装路径 -->
<home>${project.build.directory}/tomcat8x</home>
</configuration>
</configuration>
</plugin>
- 常用命令
命令 | 说明 |
mvn cargo:start | 启动容器,生命周期依赖于maven实例的生命周期,maven构建成功或者失败之后,cargo插件的生命周期也自动停止了 |
mvn cargo:run | 启动容器,如果项目的类型为JavaEE,则会部署到容器 |
mvn cargo:stop | 停止容器 |
mvn cargo:restart | 停止并重新启动容器 |
mvn cargo:redeploy | 部署到远程服务器,必须保证 Tomcat 是运行状态 |
- 自动部署到远程Web容器
部署到Tomcat服务器,需要使用 tomcat7-maven-plugin 插件来实现,在执行部署时,必须启动 Tomcat,配置信息如下:
- Tomcat 的用户配置:
在 Tomcat 的安装目录下的 conf/tomcat-users.xml 配置文件,增加用户和权限配置:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="liyong" roles="manager-gui,manager-script"/>
</tomcat-users>
- 项目POM配置:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<!-- 支持 Tomcat7 和 Tomcat 8 -->
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- Tomcat 的管理地址 -->
<url>http://localhost:8080/manager/text</url>
<server>tomcat8x</server>
</configuration>
</plugin>
- 增加Tomcat服务器登录信息:
<server>
<id>tomcat8x</id>
<username>tomcat</username>
<password>liyong</password>
</server>
- 执行命令:
命令 | 说明 |
mvn tomcat7:deploy | 执行第一次部署 |
mvn tomcat7:redeploy | 执行覆盖部署 |
注意:查看插件所有的命令可以执行 mvn help:decribe -Dplugin=org.apache.tomcat.maven:tomcat7-maven-plugin