文档章节

Maven 远程打包

逝去的回忆
 逝去的回忆
发布于 2016/10/12 16:12
字数 1255
阅读 155
收藏 1

       官方提供了Maven插件用于部署基于Maven的Web应用,不同版本Tomcat使用的插件不同,不同版本插件的使用也有一定区别,详细信息可参考http://tomcat.apache.org/maven-plugin.html。下面记录的是我在Eclipse环境(同时也在命令)中使用Tomcat Maven Plugin-2.2在Tomcat7中部署Maven Web应用的配置过程:

 

TOMCAT 添加角色用户

打开Tomcat根目录下conf目录中的tomcat_user.xml,在<tomcat-users>节点下添加manager角色和用户,用于Tomcat Maven Plugin自动部署应用,xml代码如下:

<tomcat-users>
    <role rolename="manager-gui"/>  
    <role rolename="manager-script"/>  
    <user username="tomcat" password="123456" roles="manager-gui, manager-script"/> <!-- 用户名和密码可以是其他字合法符串 -->
</tomcat-users>

 

配置Tomcat Maven Plugin插件

<plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <url>http://localhost:8080/manager/text</url> <!-- 如果使用的是tomcat7,一定要保持这个URL -->
	        <!-- <server>deploymentRepo</server> 在maven中的设置,如果配了下面的用户名和密码不需要存在了-->
            <username>tomcat</username> <!-- 在tomcat.user中的配置的密码和用户保持一致 -->
	        <password>123456</password>
	        <path>/${project.build.finalName}</path>
	        <!-- war文件路径缺省情况下指向target -->
        	<!--<warFile>${basedir}/target/${project.build.finalName}.war</warFile>-->
    </configuration>
</plugin>

 

部署应用

        在项目目录下,进入CMD命令窗口,使用 mvn clean 首先进行清理工作,如果是第一次部署的话,使用命令 mvn tomcat7:deploy -Dmaven.test.skip=true -e进行部署(后面的参数代表跳过测试环节 -e将全部的日志信息打印出来),但是如果第二次部署的话,使用命令mvn tomcat7:redeploy -Dmaven.test.skip=true -e进行部署。

        但是哦,在我刚开始的时候,使用命令的时候,出现了好几次这个的一个错误:

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project jobwisdom: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]

       我也不知道那个是怎么解决的,但是我最后使用了eclipse的命令,执行了一次maven update后,在eclipse和命令中打包都正确了,下面我给出eclipse的命令窗口,这样子远程打包方便多了。

       关于上面那个问题,有谁解决或者是知道问题的,请私信给我,我的猜测是,Maven的环境变量和eclipse中的Maven的setting.xml的问题,我不是很清楚,但是就是因为这个猜想采取eclipse中执行成功的。

 

       关于上面那个问题,我做一个补充,这个问题的根本是由于两点会出现这个ERROR信息,第一是由于如果你已经deploy了,再次使用deploy就会报错,第二种原因是因为,在pom中的userName和passWord不正确,我想起来刚开始是怎么配置的了,我在pom中根本就没有配置用户名和密码,而是引用了 %MAVEN_HOME%/conf/setting.xml 中设置的server,但是为什么在这个maven中设置了,在命令行中使用会出错,但是在eclipse中却没有出错,我就不得而知了,难道是我的环境变量有问题呢,我不是太清楚,希望大家有明白这里给我私信一下吧,下面我给出这个错误的全部信息,提供给大家参考。

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project world-project-cms: Cannot invoke Tomcat manager: Connection reset by peer: socket write error -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project world-project-cms: Cannot invoke Tomcat manager
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot invoke Tomcat manager
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:68)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
    at org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:181)
    at org.apache.http.impl.conn.LoggingSessionOutputBuffer.write(LoggingSessionOutputBuffer.java:73)
    at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115)
    at org.apache.tomcat.maven.common.deployer.TomcatManager$RequestEntityImplementation.writeTo(TomcatManager.java:880)
    at org.apache.http.entity.HttpEntityWrapper.writeTo(HttpEntityWrapper.java:89)
    at org.apache.http.impl.client.EntityEnclosingRequestWrapper$EntityWrapper.writeTo(EntityEnclosingRequestWrapper.java:108)
    at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:117)
    at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:265)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.sendRequestEntity(ManagedClientConnectionImpl.java:203)
    at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:236)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:682)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.invoke(TomcatManager.java:742)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deployImpl(TomcatManager.java:705)
    at org.apache.tomcat.maven.common.deployer.TomcatManager.deploy(TomcatManager.java:388)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85)
    at org.apache.tomcat.maven.plugin.tomcat7.deploy.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:82)
    at org.apache.tomcat.maven.plugin.tomcat7.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:132)
    ... 23 more

    ON!我知道了,原来我在Maven的配置setting中,设置了一个server,定义了服务器的用户名和密码,然后,我又在pom中写了server,并且还写了一个userName的标签,结果他最后读取的是pom中的用户名,忽略了Maven 的设置,结果又TMD在pom没有找到密码,就出现了这种错误,日。

    还有一个问题,就是当我有负载均衡的时候,N台IP的服务器,我如何能做到让插件一键打包,还在摸索中 。。。。。。。。。。

© 著作权归作者所有

逝去的回忆
粉丝 16
博文 136
码字总数 219872
作品 0
深圳
高级程序员
私信 提问
maven命令package、install、deploy

mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。 mvn clean install依次执行了clean、resources、compile、testResources......

Jack088
01/11
78
0
一个 maven 插件打包问题的排查

最近研究 sofa-ark 的插件机制时,发现当执行完 时,打在 target 目录下的 与安装到本地仓库的 大小不一致。 target 目录下的插件大小 .m2 下的插件大小 其实一开始看到这种现象也是懵逼,同...

glmapper
07/23
0
0
Maven基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-maven/ Maven简介 Maven , 用于Java项目的构建 , 依赖管理 , 项目信息管理的项目管理工具. 是Apache组织旗下的开源项目. Mav...

PereTang
2017/05/09
0
0
上传部署SpringBoot项目(Maven)到服务器

现在使用SpringBoot的架构的很显然是越来越受人们的欢迎 ,关于如何搭建SpringBoot项目我在前面也有说到.但是也有很多人在使用了SpringBoot后发现打包上传到服务器上出现了很多问题.为什么不能...

coderzs
2017/11/29
0
0
Maven学习之初识Maven

系统的学习maven 自动化构建Java程序的工具,比较强大,现在很多Java项目都是基于maven构建的,所以有必要学习。而且,太多的hadoop项目也是采用maven添加依赖的。使用maven的另外一个原因是...

Allocator
2017/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Electron React Node

NPM配置手册https://cloud.tencent.com/developer/section/1490263 URL编码参考手册:https://www.w3cschool.cn/htmltags/html-urlencode.html 在配置React环境时,提示 npm ERR! code ECON......

DB_Terrill
17分钟前
4
0
Knative 实战:基于阿里云 Kafka 实现消息推送

在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何在阿里云上基于 Kafka 实现消息推送,本文给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐...

阿里云官方博客
17分钟前
4
0
自动评论csdn博客文章实现

正文 我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。 第一步是登录代码,这个网上一大把,代码中用到了jsoup依赖包,用于解析html获...

码农实战
19分钟前
4
0
java速查手册Java Syntax Cheatsheet for Algorithms by TCXX

Numbers static MAX_VALUE xxxValue() public int compareTo(XXX) public boolean equals(Object o) static Integer valueOf(int i) static Integer valueOf(String s) static Integer value......

momo1987
27分钟前
3
0
vue Property or method "***" is not defined on the instance but referenced during render.报错

报错:title不是个方法 解决: 把:去掉不报错了

栾小糖
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部