[英]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
的內容頂部。
把它放到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.