繁体   English   中英

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

[英]Maven: Including a META-INF folder in the classes folder

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

通常,对于基于Java的Maven项目,非源文件应该放在项目的src/main/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的内容顶部。

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

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

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

把它放到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>

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

在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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM