使用Maven的Dynamic Web Project正在将webapp资源部署到类文件夹中

时间:2014-10-15 04:36:35

标签: eclipse spring maven

我不确定为什么Maven(Eclipse?)如此精彩但是我浪费时间试图将我的静态资源(javascript和css文件)作为我的Web应用程序的一部分进行部署。这些是我使用的步骤:

在Eclipse中,我首先创建了一个新的Dynamic Web Project。然后我去“配置”并选择“转换为Maven项目”。

我的目录结构如下:

src
|
---main
   |
   ---java
      |
      ---*.java files
   ---webapp
      |
      ---styles.css

问题在于styles.css类。我希望它进入我的WEB-INF目录,但事实并非如此。将项目部署到服务器会导致所有资源调用404。我将项目导出到war文件并将其展开,发现styles.css已移至WEB-INF / classes目录。班!我不确定为什么因为该文件位于Eclipse项目的webapp目录中。

我按如下方式设置了POM:

<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>MyProj</groupId>
    <artifactId>MyProj</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>My Project</name>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <org.springframework.version>4.1.1.RELEASE</org.springframework.version>
        <project.basedir>c:/MyProj</project.basedir>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
            <scope>runtime</scope>
        </dependency>
        ...
    </dependencies>
</project>

1 个答案:

答案 0 :(得分:0)

通常情况下,webapp下的内容应该是战争的根源。但是在WEB-INF下放一个css文件会是很奇怪,因为它无法由容器提供......

然而,对于这种结构,它应该永远不会WEB-INF/classes下结束,除非您在某处知道webapp实际上是资源目录...

尝试从Eclipse清理和重建,如果它不起作用,直接使用mvn命令行构建,以确定问题是在pom.xml文件还是在Eclipse配置中