使用Eclipse和Maven创建的项目如何部署到Tomcat服务器

9

我正在使用 Eclipse 3.5、Maven 2、m2eclipse 和 Tomcat 6。因此,我创建了一个基于模板“webapp”的 Maven 项目。

这是 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.itransition</groupId>
    <artifactId>hello</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>hello Maven Webapp</name> 
    <url>http://maven.apache.org</url>

    <!-- tools.jar dependency -->    
    <profiles>
        <profile>
            <id>default-tools.jar</id>
            <activation>
                <property>
                    <name>java.vendor</name>
                    <value>Sun Microsystems Inc.</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <version>1.5.0</version>
                    <scope>system</scope>
                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.1.8.1</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>hello</finalName>
    </build>
</project>

那么我想要将我的Web应用程序部署到Tomcat。我需要做什么?使用Maven install命令无法帮助我。但是,如果我通过Maven install创建war包,就可以在Eclipse中导入它,并通过服务器弹出窗口中的“添加和删除...”选项将其部署到Tomcat。


1
顺便问一句,这个default-tools.jar配置文件到底是什么鬼?! - Pascal Thivent
5个回答

6

使用Maven的Tomcat插件可以解决这个问题。该插件的主页有关于插件配置war文件部署的详细文档。


2
抱歉问一个愚蠢的问题,但我怎样才能获取这个插件?我找不到任何下载页面。 - user348267
3
没问题。当你在pom.xml文件中添加插件配置时,Maven会自动下载该插件及其依赖项。 - pkainulainen
我添加到 pom.xml 中 <plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager</url>
</configuration>
</plugin>
</plugins>
然后运行 "mvn tomcat:deploy" 命令,得到以下信息: [INFO] Deploying war to http://localhost:8080/hello
[INFO] [ERROR] BUILD ERROR [INFO] [INFO] 无法调用 Tomcat 管理器。嵌入式错误:服务器返回的 HTTP 响应代码为:403,URL 为:http://localhost:8080/manager/deploy?path=%2Fhello&war=
- user348267
1
403 可能意味着您应该将访问 Tomcat 管理器应用程序所需的用户名和密码添加到您的 pom.xml 文件中。有关配置的 Tomcat 方面,请参见此处:http://tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Configuring%20Manager%20Application%20Access另请参见此处的名为“使用不同的 Tomcat 管理器身份验证详细信息”的部分:http://mojo.codehaus.org/tomcat-maven-plugin/configuration.html - pkainulainen
当你直接从Eclipse安装Tomcat(使用Eclipse的“下载并安装”按钮)时,它不会包含Manager webapp。你需要手动下载Tomcat来获取Manager。 - undefined

5

4
发现Tomcat管理器URL(我使用的是Tomcat 6.0)是http://localhost:8080/manager/html,而mvn tomcat插件默认停留在URL中的manager。将指定的URL添加到pom.xml作为配置参数 - (请参见此URL以获取更多详细信息:http://mojo.codehaus.org/tomcat-maven-plugin/configuration.html),然后就可以工作了...
使用Tomcat7时,我发现需要将URL设置为http://localhost:8080/manager/html 并且使用具有manager-gui角色的用户名。但是,使用具有manager-script角色的用户名,并使用URL http://localhost:8080/manager/text 也可以工作,并且更加适合。manager-script角色是ant/maven脚本的设计方式。

3
所以我想将我的Web应用部署到Tomcat,我需要做什么?Maven install无法帮助我。但是,如果我通过Maven install创建war文件,我可以将其导入eclipse,并通过服务器弹出窗口中的“添加和删除…”部署到Tomcat。
由于您正在使用m2eclipse,我的建议是使用WTP部署应用程序。假设您已经安装了m2eclipse extras中的"Maven integration for WTP"功能并将Tomcat配置为服务器,则只需右键单击项目并选择“Run> Run on Server…”即可。
另一个选项是在Jetty上运行应用程序(是的,我知道这不是您要求的,但如果您不想使用WTP,这是一个非常有效的选项)。将以下代码段添加到pom.xml:
<project>
  ...
  <build>
    ...
    <plugins>
      ...
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.10</version>
      </plugin>
    </plugins>
  </build>
</project>

只需运行mvn jetty:run即可启动嵌入式Jetty服务器并在其上部署应用程序。

使用Tomcat Maven Plugin也可以实现相同的功能,但除非您想要部署到远程Tomcat(请参阅Usage页面),否则我不认为它比Maven Jetty Plugin更有优势。

在开发期间,我会使用第一种选项(使用WTP部署)。


当我使用WTP部署应用程序时,我的页面出现404错误。 - user348267
@fatkh,你可能在其他地方遇到了问题或者做错了什么,但我保证这对我们其他人是有效的。 - Pascal Thivent

0
如果您希望由Maven创建的WAR文件可以直接部署到Tomcat服务器上,那么Tomcat部署配置可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接