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

use*_*916 40 java maven-2 web-applications java-ee maven-plugin

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

Ric*_*ler 82

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

对于Maven WAR项目,它稍微复杂一些:还有src/main/webappMaven希望找到的目录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)
Run Code Online (Sandbox Code Playgroud)

由于WEB-INF目录必须存在src/main/webapp,我建议避免再次定义它src/main/resources.虽然这是完全有效的,并且两个目录的内容将被合并,但如果在两者中定义了文件,则会令人困惑.内容src/main/resources将优先,因为它们被复制到内容的顶部src/main/webapp.

  • 原来的问题实际上是关于META-INF而不是WEB-INF,虽然web.xml进入WEB-INF文件,例如context.xml需要在META-INF中,但解决方案大致相同.在webapp中创建META-INF文件夹并将context.xml放在其中. (23认同)

jt.*_*jt. 11

Maven希望在资源文件夹中输入此类信息.有关更多信息,请参见此处

Project
|-- pom.xml
`-- src
    `-- main
        |-- java
        `-- resources
Run Code Online (Sandbox Code Playgroud)

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