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

转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html

用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>
    </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>
            </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\(用户名)\.m2\settings.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即可。

时间: 2024-10-11 08:56:44

(转)用 Maven 部署 war 包到远程 Tomcat 服务器的相关文章

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

原文:http://www.cnblogs.com/guogangj/p/5457959.html#3574439 过去我们发布一个Java Web程序通常的做法就是把它打成一个war包,然后用SSH这样的工具把它上传到服务器,并放到相应的目录里,让Tomcat自动去解包,完成部署. 很显然,这样做不够方便,且我们在用SSH把文件拽上去的时候很可能会搞错.(当然了大厂就不会有这样的问题,因为人家有运维团队专门来干这个事情,哈哈) 现在我要的是:一行命令部署到本地服务器,在本地测试一番,没有问题的

自动部署基于Maven的war文件到远程Tomcat

转载自:https://www.cnblogs.com/jtlgb/p/7018705.html Tomcat 7发布URL = http://localhost:8080/manager/text命令 = mvn tomcat7:deploy Tomcat 6发布 URL = http://localhost:8080/manager/命令 = mvn tomcat6:deploy 1.打开tomcat的安装目录的 conf/tomcat-users.xml,添加以下内容: 2.在maven的

持续集成之Jenkins自动部署war包到远程服务器

1.下载插件Deploy to container 首先需要下载一个Jenkins的插件:Deploy to container Plugin ,可以在Jenkins的系统管理->插件管理->可选插件中查找 下载安装后重启jenkins. 去服务器重启jenkins: 2.重启Jenkins后,在增加构建后操作步骤中会多出一个选项Deploy war/ear to a container: 原文地址:https://www.cnblogs.com/yanwuliu/p/9968580.html

使用Jenkins远程部署war包到tomcat container

Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to container Plugin": 但是在安装插件时,Jenkins会先ping www.google.com这个域名来保证网络连通性 ,我们需要将其改为www.baidu.com,来使得检查阶段通过: 编辑Jenkins的配置文件default.json: 将connnectionCheckUrl改为h

Maven开发基础总结(Maven自启动,Maven打war包,Maven热部署)

学习内容: 1.不依赖外部Tomcat,自己启动方式部署 2.Maven打war包,远程部署到centOS 3.Maven热部署(不关闭Tomcat部署应用) 做maven开发前提: 1.编码UTF-8 2.设置maven仓库位置(setting.xml文件里面配置Maven仓库的路径) 例如:<localRepository>G:\Maven\repository</localRepository>(这个仓库是公司Maven服务器仓库down下来的) 3.在eclipse中设置M

Tomcat 7 如何手工部署war包对应的Java项目

平常的开发我们都是通过IDE进行项目的部署,但有时候我们不得不进行手工部署(例如在Server上). 手工部署分为以下几步: 第1步: 用maven打war包 (假如得到的war包名为: appkit-web.war) mvn package 如果想打包过程中跳过测试,采用以下命令: mvn package -Dmaven.test.skip=ture 第2步: 把war包拷贝到tomcat安装的webapps目录下 cp target/appkit-web.war ~/software/apa

maven打war包注意之xml、properties文件没打进去解决方法

maven项目在ide中编译出的war包一般不会有很多问题. 但是经过集成环境打war包会出现war包中打不进xml.properties等文件.这样打war包不会报错,但是war包放进tomcat中部署就报错了. 解决方法是将src/main/java和src/main/resources中的配置文件在pom的build节点配置进去 之前在项目的集成中有遇到这种情况,记录下来. 例如:src/main/java中有个包放hibernate的映射xml,和sqlmap配置文件.        

如何在阿里云上部署war包到tomcat服务器

一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉更好用一些) 如何配置xshell和xftp: 名称:自定义 协议和端口号:xshell默认是SSH协议,端口号是22,xftp是FTP协议,端口号是21,但是我用FTP协议连接阿里云,总是连接不上,所以把协议换成SFTP,端口号换成22,就可以连上,所以建议这种情况下,都填成SSH协议 登录名和密

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ©Copyright 蕃薯耀 2017年3月6日 http://www.cnblogs.com/fanshuyao/ 一.Linux快速部署W