Tomcat不提供maven war插件中的文件

Tomcat不提供maven war插件中的文件,maven,tomcat,maven-war-plugin,Maven,Tomcat,Maven War Plugin,我试图让我的Tomcat服务器提供一个文件。我做了一个非常简单的例子来告诉你哪里出了问题,即使它很简单,也不起作用 我的项目是这样做的: test |->assets | |->testB.txt |->src | |->main | | |->webapp | | | |->WEB-INF | | | | |->web.xml | | | |->testA.txt |-> pom.xml pom.xml &l

我试图让我的Tomcat服务器提供一个文件。我做了一个非常简单的例子来告诉你哪里出了问题,即使它很简单,也不起作用

我的项目是这样做的:

test
|->assets
|   |->testB.txt
|->src
|  |->main
|  |  |->webapp
|  |  |  |->WEB-INF
|  |  |  |  |->web.xml
|  |  |  |->testA.txt
|-> pom.xml
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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>assets/</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat6-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>

我不明白为什么我可以访问其中一个,但我看不到另一个(404错误).

tomcat6:run
不运行打包的war,请尝试使用
mvn tomcat6:run war

您无法访问
testB.txt
,因为在运行
tomcat6:run
时,默认情况下,Tomcat Maven插件将查看
webapp
文件夹,而不是查看生成的war文件(通过
package
阶段),也不是查看
target
文件夹中生成的未打包war

这样做是有目的的,以便您可以动态创建新资源或更改其内容,并且可以在正在运行的实例上进行更改(热部署)

您可以通过以下方式进行验证:

  • 在war文件中添加一个额外的
    testC.txt
    ,运行实例将忽略它
  • 在构建的未打包war中添加一个额外的
    testC.txt
    ,它将被忽略
  • 在webapp文件夹中添加一个额外的
    testC.txt
    ,它将可用
从其:

默认位置为${basedir}/src/main/webapp

您可以通过
warSourceDirectory
元素对其进行配置。在本例中,您希望将其指向
target
文件夹中构建的未打包war。因此,您可以按以下方式更改配置:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <path>/</path>
        <warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
    </configuration>
</plugin>

org.apache.tomcat.maven
tomcat6 maven插件
2.2
/
${project.build.directory}/${project.build.finalName}

注意:它现在指向通过
阶段构建的Maven。它会起作用的。

谢谢你的解释。我不知道。现在一切正常。
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <path>/</path>
        <warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
    </configuration>
</plugin>