• 近期将进行后台系统升级,如有访问不畅,请稍后再试!
  • 极客文库-知识库上线!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 每日更新优质编程文章!
  • 更多功能模块开发中。。。

用 Maven 部署 war 包到远程 Tomcat 服务器

过去我们发布一个 Java Web 程序通常的做法就是把它打成一个 war 包,然后用 SSH 这样的工具把它上传到服务器,并放到相应的目录里,让 Tomcat 自动去解包,完成部署。

很显然,这样做不够方便,且我们在用 SSH 把文件拽上去的时候很可能会搞错。(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈)

现在我要的是:一行命令部署到本地服务器,在本地测试一番,没有问题的话就一行命令部署到正式服务器,另外正式服务器的密码只有我自己知道,只有我能执行这个部署(其它开发组员不知道正式服务器密码)。

OK,我们先要在Maven(POM.XML)中引入这个插件:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </build>

这个叫“tomcat7-maven-plugin”的插件是利用 Tomcat 的“manager”模块来实现 war 包部署的,所以必须确保 Tomcat 安装了 Manager 模块,(看看 webapp 下有没有 Manager 目录)它虽然名字带“tomcat7”,但 Tomcat8 也适用,我用的就是 Tomcat8。接下来我们对本地的 Tomcat 的 manager 模块进行一些配置,打开本地 Tomcat 的 tomcat-users.xml 文件,增加这样的配置:

<user username=”deployer” password=”654321″ roles=”manager-script”/>

这个叫“deployer”的用户,角色设定为“manager-script”,表明他可以使用 Tomcat 的 manager 模块的后台脚本管理,BTW,如果角色为“manager-gui”则表示此用户可使用 manager 模块的前端网页管理。然后对正式服务器也做一个类似的配置。

接下来完善一下 tomcat7-maven-plugin 的配置:

<properties>
        <warPackageName>MyWebAppDemo</warPackageName>
        <tomcat.deploy.server>localTestServer</tomcat.deploy.server>
        <tomcat.deploy.serverUrl>http://localhost/manager/text</tomcat.deploy.serverUrl&gt;
    </properties>
 
    <profiles>
        <profile>
            <id>deploy2production</id>
            <properties>
                <tomcat.deploy.server>productionServer</tomcat.deploy.server>
                <tomcat.deploy.serverUrl>http://120.26.93.30:8080/manager/text</tomcat.deploy.serverUrl&gt;
            </properties>
        </profile>
    </profiles>
 
    <build>
        <finalName>${warPackageName}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <server>${tomcat.deploy.server}</server>
                    <url>${tomcat.deploy.serverUrl}</url>
                    <path>/${warPackageName}</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

OK,现在来讲解一番:

Configuration-Server

Configuration 中的 server 是个变量,叫 tomcat.deploy.server,我并没有写死,因为我们要将 WAR 包部署到不同服务器去,而这个变量则由前面的 properties 来确定,我们可以看到,properties 中,tomcat.deploy.server 被赋值为 localTestServer,这就是我们的默认值,但通过调整Maven的运行参数,我们可以将它修改为别的值,那么 localTestServer 又表示什么呢?我前面说了,服务器的密码是自己定的,而且不希望别人知道,别的开发组员能各自决定自己本地服务器的密码,但他们无需知道我的密码,所以这个 localTestServer 的相关的内容是定义在“~/.m2/settings.xml”中的,在 Windows7 下通常就是在“C:Users(用户名).m2settings.xml”这里。打开这个配置文件,在 servers 中增加两个 server,也就是我们要将程序部署上去的两个 server。

<servers>
    <server>
        <id>productionServer</id>
        <username>deployer</username>
        <password>123456</password>
    </server>
    <server>
        <id>localTestServer</id>
        <username>deployer</username>
        <password>654321</password>
    </server>
</servers>

这个貌似没什么好说了,这个配置非常的 self-explanatory。

Configuration-url

Configuration 中的 url 也是个变量,很显然,我也不能把它写死,但它不像用户名和密码那么敏感,所以直接出现在 POM.XML 中也无所谓,默认情况下,其值是“http://localhost/manager/text”,这个地址便是 Tomcat 的 Manager 模块的后台脚本入口,url 的值同样可以通过Maven的运行参数调整。

Configuration-path

要将 WAR 包部署到哪里去?要指定一个 path,如果 path 为“/”,也就是部署为传说中的 ROOT.WAR,这次我们指定了一个名为 MyWebAppDemo 的 path。部署成功之后可以通过 http://localhost/MyWebAppDemo 来访问。

profile 参数

也就是前面提到的Maven的参数,这里我们定了一个参数,叫 deploy2production,在运行 mvn 的时候带上这个参数的话,就会用参数中的 tomcat.deploy.server,tomcat.deploy.serverUrl 来取代默认的值。

OK,所有的工作都完成了,就剩下部署了。开始吧:

mvn tomcat7:redeploy

为什么是 redeploy 而不是 deploy?因为用 deploy 的话在我这里会出现些问题,具体啥问题就不说了,也许你那里正常,如果没问题的话用 deploy 也行啊。执行完这个之后,我们的程序就被部署到本地 Tomcat 服务器上了。再来看,这是带参数的 mvn:

mvn tomcat7:redeploy -Pdeploy2production

这么一下,我们的程序就被部署到正式服务器去了。

如果你想把程序移除掉,那很简单,只需要使用 undeploy 来代替 redeploy 即可。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:用 Maven 部署 war 包到远程 Tomcat 服务器
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

欢迎 注册账号 登录 发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00