如今,maven可以轻松实现一键部署web项目到Linux上的tomcat。自己做了下研究,亲测可用。
这里与tomcat7为例。(tomcat6与tomcat7有一点区别)
1,配置你Linux上的tomcat的配置文件。
找到apache-tomcat-7xxx文件夹下的conf文件夹下的tomcat-users.xml。
打开后添加:
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
ok,启动一下tomcat。
测试我们的用户名和密码是否设置正确
输入地址:http://yourIp:port/manager/text(tomcat7的写法)(Linux中的ip和端口)
输入地址:http://yourIp:port/manager/html(tomcat6的写法)
如果出现要输入用户名和密码的对话框,表示你设置成功。
现在,tomcat就不要关闭了,我们所有的操作都是在tomcat开启的情况下操作,不然怎么叫做无需重启服务呢。
2,配置我们的maven中的setting.xml文件
找到你项目关联的maven地址中的setting.xml
做到这里我们就成功了一大步。
3,下面我们就来配置我们的web项目。你要确定它是集成了maven的。
配置一个插件即可运行。直接上图
然后你就可以在tomcat文件夹下的webapps文件夹下可以看到我们的项目的war包了。
输入index.jsp即可看到我们项目的界面。
到这里我们就配置成功了。
新增异常:
cannot find war的异常:
可能是你使用了打war包的插件,你需要把warName的值改成跟你找不到的war包名一样即可。
<!--用来打包的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<!--定义包文件的名称,不带版本号-->
<warName>${project.artifactId}-${project.version}</warName>
</configuration>
</plugin>
//第一次 mvn package -Pdevelop -Dmaven.skip.test=true tomcat7:deploy
//之后 mvn package -Pdevelop -Dmaven.skip.test=true tomcat7:redeploy
package使用的是最外层的
打包使用:
对于tomcat8以上的,如果出行发布失败、报错等情况
需要在你的tomcat服务器的conf/Catalina/localhost/目录下创建一个manager.xml文件,写入如下值:
<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
保存。
发布项目到webapps下为ROOT.war的配置:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>
tomcat7-maven-plugin
</artifactId>
<version>2.2</version>
<configuration>
<url>http://192.168.1.249:9999/manager/text</url>
<server>tomcat9</server>
<username>admin</username>
<password>admin</password>
<path>/</path> <!-- 这里加了路径,如/ssm那么上传会有个ssm.war的包,且访问的路径需要加ssm/index.jsp -->
<!--<warFile>${basedir}/target/ROOT.war</warFile>-->
</configuration>
</plugin>
//---------end----------