为什么tomcat-maven-plugin试图部署到错误的URL?

时间:2012-01-22 15:59:45

标签: java tomcat maven

我正在创建一个包含两个模块的虚拟maven项目,我已经包含了一个通用的pom.xml文件。我能够从根pom.xml文件构建并运行所有测试,但是当它将文件部署到Tomcat时,它就会崩溃。我的插件是:

<build>
    <finalName>dummy</finalName>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <configuration>
                <url>http://127.0.0.1:8090/manager/text</url>
                <server>TomcatServer</server>
                <path>/dummy</path>
            </configuration>
        </plugin>
    </plugins>
</build>

的settings.xml

<server>
    <id>TomcatServer</id>
    <username>admin</username>
    <password>admin</password>
</server>

但是,当我运行构建时,它使用默认配置值,我收到以下错误消息:

  

无法在项目webapp上执行目标org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy(default-cli):无法调用Tomcat管理器:http://localhost:8080/manager/deploy?path=%2Fwebapp&war= - &gt; [帮助1]

有谁知道如何让插件使用我的配置?

更多输出:

[INFO] --- maven-war-plugin:2.1.1:war (default-war) @ webapp ---
[INFO] Packaging webapp
[INFO] Assembling webapp [webapp] in [C:\Websites\www.dummy.app\webapp\target\webapp]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\Websites\www.dummy.app\webapp\src\main\webapp]
[INFO] Webapp assembled in [15 msecs]
[INFO] Building war: C:\Websites\www.dummy.app\webapp\target\webapp.war
[WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored
(webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')
[INFO]
[INFO] <<< tomcat-maven-plugin:1.1:deploy (default-cli) @ webapp <<<
[INFO]
[INFO] --- tomcat-maven-plugin:1.1:deploy (default-cli) @ webapp ---
[INFO] Deploying war to http://localhost:8080/webapp
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] my-app ............................................ SUCCESS [4.747s]
[INFO] webapp ............................................ FAILURE [3.313s]
[INFO] dummy ............................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.376s
[INFO] Finished at: Mon Jan 23 22:46:11 GMT 2012
[INFO] Final Memory: 18M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy (default-cli) on project webapp: Cannot invoke Tomcat manager: http://localhost:8080/manager/deploy?path=%2Fwebapp&war= -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :webapp

由于

3 个答案:

答案 0 :(得分:3)

<properties>
   <maven.tomcat.url>http://localhost:8080/manager/text</maven.tomcat.url>
</properties>

为我修好了。

答案 1 :(得分:1)

答案 2 :(得分:1)

我也有同样的问题。这就是我的解决方法。虽然这是一个迟到的答案,但我认为即使在今天这个答案仍然适用。

我正在使用tomcat7.tomcat-maven-plugin:1.1默认为tomcat部署网址http://localhost:8080/manager/html,但对于 tomcat 7 ,网址已更改为http://localhost:8080/manager/text

第1步:找到网址&amp; tomcat用于部署war文件的角色。

我发现通过手动转到

apache-tomcat-7.0.41\webapps\manager\WEB-INF\web.xml

用于部署的网址是: / text ,因此maven应使用 http://localhost:8080/manager/text 此网址的作用是“ manager-script

   <security-constraint>
    <web-resource-collection>
      <web-resource-name>Text Manager interface (for scripts)</web-resource-name>
      <url-pattern>/text/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-script</role-name>
    </auth-constraint>
  </security-constraint>

步骤2:为角色配置tomcat凭据

所以现在我们找到了部署war和角色的URL。如果你没有配置tomcat用户。下面是如何将角色添加到apache-tomcat-7.0.41 \ conf \ tomcat-users.xml。 / p>

<tomcat-users>

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

</tomcat-users>

步骤3:在pom.xml中配置tomcat-maven-plugin以使用tomcat url进行部署。

现在我们需要配置tomcat-maven-plugin来使用这些。下面是我在pom.xml中的插件配置。这将覆盖tomcat-maven-plugin的默认tomcat部署URL。

    <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>tomcat-maven-plugin</artifactId>
            <configuration>
                <server>mytomcatserver</server>
                <url>http://localhost:8080/manager/text</url>
            </configuration>
    </plugin>

步骤4:为tomcat网址凭据配置maven的settings.xml。

现在,对于将war文件部署到tomcat的maven插件,它需要用户名&amp;密码 为您的tomcat服务器。 找出maven所在的settings.xml(我的是apache-maven-3.2.3 \ conf)并将以下配置应用到

<servers>
  <server>
      <id>mytomcatserver</id>
      <username>admin</username>
      <password>admin</password>
    </server>
</servers>

第5步:关键时刻

启动tomcat。

mvn包(创建战争文件)

mvn tomcat:deploy(用于战争部署的tomcat控制台)

您的网络应用程序将在http://localhost:8080/{context}

上提供