Maven:在类文件夹中包含 META-INF 文件夹

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


答案 1

通常,对于基于 Java 的 Maven 项目,非源文件应位于项目的子目录中。在构建的进程资源阶段,该目录的内容将复制到输出目录(默认情况下为 )。src/main/resourcesresourcestarget/classes

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

[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-INFsrc/main/webappsrc/main/resourcessrc/main/resourcessrc/main/webapp


答案 2

Maven 希望在资源文件夹中提供此类信息。有关详细信息,请参阅此处

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

有关指定其他资源目录的信息,请参阅此处


推荐