42

我有一个非常简单的 WAR 项目,我想META-INF在所有已编译的 Java 类所在的类输出文件夹的顶部包含一个名为的目录。我正在使用 Maven,但似乎默认情况下 Maven 不会包含任何不是 Java 类的东西。所以它忽略了我位于目录META-INF顶部的src目录。该META-INF目录包含一个名为persistence.xml. 关于如何指示 Maven 将此目录和文件放入输出文件夹的任何快速指示?

4

5 回答 5

83

一般来说,对于基于 Java 的 Maven 项目,非源文件应该放在src/main/resources项目的子目录中。在构建的process-resources阶段,该目录的内容resources被复制到输出目录(默认情况下,target/classes) 。

对于 Maven WAR 项目,它稍微复杂一些:还有一个src/main/webapp目录,Maven 期望在其中找到WEB-INF/web.xml. 要构建您的 WAR 文件,该文件必须存在;否则,您将看到如下错误消息:

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

由于该WEB-INF目录必须存在于 下src/main/webapp,我建议避免在src/main/resources. 尽管这是完全有效的,并且两个目录的内容将被合并,但如果在两个目录中都定义了一个文件,它可能会让人感到困惑。的内容src/main/resources将优先,因为它们是从 的内容顶部复制的src/main/webapp

于 2009-08-19T08:47:39.783 回答
11

Maven 想要资源文件夹中的此类信息。请参阅此处了解更多信息。

Project
|-- pom.xml
`-- src
    `-- main
        |-- java
        `-- resources

要指定其他资源目录,请参见此处

于 2009-08-19T02:20:03.777 回答
4

我会间接回答你的问题,如果你已经跳转到 Maven2,我肯定会推荐使用 Archetype 插件。使用 webapp 原型将确保您最终获得规范的目录结构。其他任何查看您的来源的人都会立即知道所有内容在哪里,并且不会对您的文件去向有任何疑问。

于 2009-08-19T03:11:05.473 回答
4

把它放到 pom.xml 中:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
于 2012-04-25T14:49:46.730 回答
0

在 POM.xml 中给出以下条目

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                  <!--webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory-->
                  <packagingExcludes>**/web.xml</packagingExcludes>
                </configuration>
            </plugin>
于 2011-04-13T17:09:34.770 回答