java - project教學 - tomcat8-maven-plugin




Maven:在classes文件夾中包含META-INF文件夾 (4)

我有一個非常簡單的WAR項目,我想在類輸出文件夾的頂部包含一個名為META-INF的目錄,其中所有已編譯的Java類都是。 我正在使用Maven,但似乎默認情況下Maven不會包含任何非Java類。 所以它忽略了我位於src目錄頂部的META-INF目錄。 META-INF目錄包含名為persistence.xml的文件。 有關如何指示Maven將此目錄和文件放入輸出文件夾的快速指示?


Maven希望在資源文件夾中輸入此類信息。 有關更多信息,請參見here

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

要指定其他資源目錄,請參見here


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

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

通常,對於基於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-plugin