针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争
從第一部分恢復
第1部分
我們剛剛定義了父 pom。 一種特殊的pom類型,它最終定義了我們的應用程序將要使用的庫。 它還配置了所有用于包裝我們應用程序每個模塊的Maven工具。 您可以在此處 簽出 -1部分示例代碼。
因此,到目前為止,在將要開發應用程序的目錄中,只有一個名為sample-parent的文件夾,并且該目錄中存放有pom.xml 。 我們的父母pom!
正如我們在模塊部分中所看到的,我們已經定義了應用程序的構建塊
- 樣品耳
- 樣本網
- 樣品服務
- 樣本域
我們需要創建相關的maven模塊,并為每個模塊添加特定的pom.xml文件。
定義戰爭模塊
在sample-parent文件夾下,我們創建一個名為sample-web的子文件夾,并且還添加了pom.xml文件。 (某些人在同一級別上執行此操作)。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>gr.javapapo</groupId><artifactId>sample-parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>sample-web</artifactId></project>但是,這僅僅是什么,我們需要更具體地說明此pom將幫助我們構建什么,因此我們需要定義包裝類型,模塊名稱(針對此戰爭)以及任何依賴項。
...<artifactId>sample-web</artifactId><packaging>war</packaging><build><finalName>${project.artifactId}</finalName></build><dependencies><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><scope>provided</scope></dependency></dependencies></project>如果您使用的是支持Maven的IDE(例如Eclipse ),它將自動檢測pom內容的更改,并將自動為您創建符合Maven War包裝的文件夾。 它將為您創建以下結構。 當然,您可以自己做,但是很方便!
樣本網
- src
- 主要
在webapp子文件夾下,我已經預創建了\ WEB-INF \ web.xml文件。 我可以跳過這一部分,因為Maven插件可以為我們做這件事,但是只是為了說明這種情況,在某些情況下您想自行創建它并創建任何自定義條目
如果您想知道將什么“放入”一個空的Servlet 3.1 web.xml文件,請在此處查看 ,或下載此文章的代碼。 我還在一個簡單的包下的java子文件夾中添加了一個非常簡單的Servlet,它將包含在我們的應用程序中。 只需幾行代碼。 同樣,您可以在帖子末尾下載相關git(bitbucket)鏈接中的所有代碼。
因此,我們在war模塊pom文件中僅添加了幾行,然后在擁有IDE的情況下,該工具神奇地為我們創建了非常特定的文件夾布局。 我們已“遵循”此布局,并添加了一個非常簡單的servlet java類和一個小的xml描述符。 這里的真正意義是什么。
好吧,關于Maven的偉大之處在于,我們的War模塊需要構建的一些東西已經在“特殊”父pom中定義和配置了。 但是這些東西是什么,Maven將如何使用它? 正如我們已經闡述的那樣,Maven完全是關于約定的。 您以“正確”的方式放置正確的事物,然后它將為您完成所有工作。
因此,當行家掃描這個戰爭包裝pom時,它將需要
- 編譯我們的java類,它是一個servlet
- 并將sample-web文件夾下的所有內容打包到war文件和所有依賴項中。
誰將做所有這些事情,因為我們沒有在戰爭pom中添加任何特殊功能(除了一個依賴庫)。 好吧,這是配置或我們的父pom(請參閱上一篇文章)。
為了編譯我們的源代碼,將“調用” maven-compiler-plugin ,并且由于我們已經定義了maven模塊的打包為“ war”,因此將調用maven-war-plugin打包所有內容,以便我們,創建適當的描述符。
因此,在我們的應用程序可能有多個war或jar模塊的情況下,如果我們有一個父pom,并且在一個中央位置定義了插件和基本配置,則我們不必在所有或我們中重新定義它war / jar pom(s)。
僅在戰爭或罐子之一需要特殊處理的情況下(例如,包裝一些額外的東西或具有特殊的布局),然后在構建部分下,我們可以重新定義插件并覆蓋或添加一些額外的東西,行為。 但這不是我們的情況。 我們希望對插件進行一次定義,并具有一個通用配置,該配置將由將要使用它的應用程序的所有模塊“ 繼承 ”。
使用上面的提示,您可以嘗試并嘗試創建上面已經“定義”的示例服務模塊,或者等待第三部分將快速介紹其余的具體模塊。
您可以在此處找到此帖子的代碼。 (post2標簽)
資源資源
- 第1部分
- Maven War文件夾布局
- JavaEE 7- xml描述符
翻譯自: https://www.javacodegeeks.com/2014/05/java-ee7-and-maven-project-for-newbies-part-2-defining-a-simple-war-for-our-application.html
總結
以上是生活随笔為你收集整理的针对新手的Java EE7和Maven项目-第2部分-为我们的应用程序定义一场简单的战争的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工业三废是指 工业三废是指什么
- 下一篇: 定制基元和DTO的(反)序列化和验证