tomcat7 maven插件部署失败

Posted

技术标签:

【中文标题】tomcat7 maven插件部署失败【英文标题】:tomcat7 maven plugin deploy fails 【发布时间】:2012-10-26 07:21:53 【问题描述】:

我在将 tomcat 作为服务安装的远程计算机上部署时遇到问题。 我的tomcat-users如下:

<tomcat-users>
<role rolename="manager"/>
<user username="admin" password="admin" roles="tomcat, admin, manager-gui, manager-script"/>

</tomcat-users>

我的 settings.xml 是:

<settings>
<pluginGroups>
<pluginGroup>org.apache.tomcat.maven</pluginGroup>
</pluginGroups>
<servers>
<server>
  <id>tomcat7</id>
  <username>admin</username>
  <password>admin</password>
</server>

</servers>

</settings>

我的 pom.xml 有以下内容:

            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <server>tomcat7</server>
                    <url>http://localhost:8081/manager/text</url>
                    <warFile>target/editor-$project.version.war</warFile>
                </configuration>

我继续在 maven 控制台的输出上获得 401 Unauthorized。你能告诉我我做错了什么吗?

【问题讨论】:

***.com/questions/3714080/tomcat-7-maven-plugin 你可以在***.com/questions/16230666/…看到我的回答 在***.com/questions/16230666/…上查看我的回答 【参考方案1】:

以下方法对我有用。

    请更改您的pom.xml 以包含

    <project>
        ...
        <build>    
            <plugins>    
            ....
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <url>http://localhost:8080/manager/text</url>
                        <server>my-tomcat</server>
                        <path>/myapp</path>
                    </configuration>
                </plugin>
            </plugins>
            ...
        </build>
        ...
    </project>
    

    确保您的 Tomcat 7 服务器在 TOMCAT_HOME/conf/tomcat-users.xml 上有以下行:

    <!-- Role to manage WAR files via html /manager. The name should be as is! -->
    <role rolename="manager-gui"/>
    <!-- Role to manage WAR files via script like Maven. The name should be as is! -->
    <role rolename="manager-script"/>
    
    <!-- One user cannot have manager-gui and manager-script roles -->
    <user username="managerGui" password="managerPwd" roles="manager-gui"/>
    <user username="manager" password="managerPwd" roles="manager-script"/>
    

    配置您的USER_HOME/.m2/settings.xml 以包含密码。

    <settings>
        ...
        <servers>
            ...
            <server>
                <id>my-tomcat</id>
                <username>manager</username>
                <password>managerPwd</password>
            </server>
        </servers>
    
    </settings>
    

    使用mvn tomcat7:redeploy部署

阅读更多http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html

【讨论】:

【参考方案2】:

尝试使用 -x -e 运行 mvn 然后你会看到什么样的信息正在发送到服务器。我的猜测是服务器没有获得用户名/通行证。这意味着配置文件有问题,即:settings.xml

tomcat7-maven-plugin 怎么知道 settings.xml 在哪里?

编辑:看看这个which-maven-settings-xml-files

elek 在那里提供了使用 -X 运行 mvn 并且在开始时您会看到 "从 .user/.m2/settings.xml 读取用户设置..

【讨论】:

确实是这个问题。设置 xml 取自不同的位置。我假设要使用的正确的是来自 C:\.m2\settings.xml,但是来自 C:\users\.m2 的那个被拿走了。谢谢帮助【参考方案3】:

mvn tomcat7:redeploy -Dtomcat.username=tomcatscript -Dtomcat.password=s3cret

同样有效。

【讨论】:

【参考方案4】:

你应该在tomcat-users.xml中声明所有角色:

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="admin"/>
<role rolename="manager-script"/>

【讨论】:

去掉roles="..."中的尾随空格 你能连接到localhost:8081/manager/text 吗?你看到 FAIL - Unknown command /text 吗?你在 server.xml 中配置了 UserDatabase 吗?

以上是关于tomcat7 maven插件部署失败的主要内容,如果未能解决你的问题,请参考以下文章

02 Maven 笔记:Eclipse下maven项目在Tomcat7和Jetty9中部署调试

maven tomcat7 远程热部署

Maven - 在当前项目和插件组中找不到前缀“tomcat7”的插件

IDEA使用Maven+Tomcat插件实现热部署

使用tomcat7-maven-plugin进行Tomcat部署失败,并显示错误“无法调用Tomcat管理器:通过对等方重置连接:套接字写入错误”

eclipse-maven集成tomcat7热部署项目