Tomcat不提供maven war插件中的文件
我试图让我的Tomcat服务器提供一个文件。我做了一个非常简单的例子来告诉你哪里出了问题,即使它很简单,也不起作用 我的项目是这样做的: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
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
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>