java ee maven_针对新手的Java EE7和Maven项目–第7部分
java ee maven
從前面的部分恢復
第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分
在上一篇文章(第6章)中,我們發現了如何使用Arquillian和Wildfly 8.1進行JPA2域模型的單元測試。在上一篇文章中,我們做出了一個簡單的配置決定,我們使用了與Wildfly 8.1捆綁在一起的內部H2數據庫配置的數據源(稱為ExampleDS)。 但是真正的DBMS呢? 在這篇文章中,我們將擴展以前的工作,使用相同的原理,并
- 在我們的本地主機上對正在運行的PostgreSQL進行測試
- 使用Arquillian Offer的ShrinkWrap APi的一些非常好的功能。
先決條件
您需要在本地安裝PostgreSQL RBDMS ,我的示例基于在localhost上運行的服務器,數據庫名稱為papodb 。
添加更多依賴
最終,我們需要在樣本父代(pom)中添加更多依賴項。 其中一些與Arquillian有關,特別是ShrinkWrap Resolvers功能(稍后會詳細介紹)。
因此,我們需要將其添加到父pom中。 xml如下:
<shrinkwrap.bom-version>2.1.1</shrinkwrap.bom-version><!-- jbdc drivers --><postgreslq.version>9.1-901-1.jdbc4</postgreslq.version> ...<!-- shrinkwrap BOM--> <dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-bom</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type><scope>import</scope></dependency><!-- shrinkwrap dependency chain--><dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><version>${shrinkwrap.bom-version}</version><type>pom</type></dependency><!-- arquillian itself--><dependency><groupId>org.jboss.arquillian</groupId><artifactId>arquillian-bom</artifactId><version>${arquillian-version}</version><scope>import</scope><type>pom</type></dependency><!-- the JDBC driver for postgresql --><dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId><version>${postgreslq.version}</version></dependency>有關上述更改的一些注意事項:
- 為了避免依賴項之間的任何潛在沖突,請確保在Arquillian BOM之上定義ShrinkWrap BOM
現在在sample-services(pom.xml)上 ,托管的項目是簡單測試,我們需要引用其中一些依賴項。
<dependency><groupId>org.jboss.shrinkwrap.resolver</groupId><artifactId>shrinkwrap-resolver-depchain</artifactId><scope>test</scope><type>pom</type></dependency><dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId></dependency>重組我們的測試代碼
在前面的示例中,我們的測試很簡單,我們僅使用了特定的測試配置。 由于我們將測試應用程序打包為jar,因此生成了單個test-persistence.xml文件,而沒有web.xml文件。 現在,我們將測試存檔升級為戰爭。 當涉及捆綁和部署企業應用程序時,JavaEE7中的戰爭包裝已成為第一手公民。 與前面的示例的主要區別在于,我們希望保留以前的設置,這意味著在wildfly上使用內部H2進行測試,以及對真實的RDBMS服務器進行新的設置測試。 因此,我們需要維護2套配置文件,并利用Maven配置文件功能,根據我們的模式對它們進行相應的打包。 如果您不熟悉Maven,請確保查看配置文件的概念。
為每個配置文件添加單獨的配置
因此,我們的測試資源(請注意這些資源位于src / test / resources下)如下所示。
兩種情況都有差異。 h2的test-persistence.xml指向ExampleDS數據源,其中postgre上的那個指向我們在web.xml中定義的新數據源! 請從下面的git鏈接中查看實際代碼。
這就是我們在web.xml中定義數據源的方式
以上注意事項
- JNDI名稱中的標準命名java:jboss / datasources / datasourceName
- 一旦讀取了web.xml文件的內容,應用服務器就會自動部署和配置新的數據源。
這是我們的persistence.xml
以上注意事項
- 確保2個JNDI條目在數據源定義和persistence.xml中都相同
- 當然,用于postGresql的Hibernate方言是不同的
- 高亮顯示的行是Wildfly 8.1所必需的特殊設置,如果您要一口氣部署它,則需要設置數據源,jdbc驅動程序和代碼。 它提示應用程序服務器首先初始化和配置數據源,然后初始化EntityManager。 如果您已經部署/配置了數據源,則不需要此設置。
在我們的pom中定義配置文件
在樣本服務pom.xml中,添加以下部分。 這是我們的配置文件定義。
<profiles><profile><id>h2</id><build><testResources<testResource><directory>/resources-h2</directory><includes><include>**/*</include></includes></testResource></testResources></build></profile><profile><id>postgre</id><build><testResources><testResource><directory>/resources-postgre</directory><includes><include>**/*</include></includes></testResource></testResources></build></profile></profiles>根據激活的配置文件,我們指示Maven在特定的子文件夾下包括并使用xml文件。 因此,如果我們應用以下命令:
mvn clean test -Pdb2然后,maven將在resource-h2文件夾下包含persistence.xml和web.xml,我們的測試將使用內部的H2 DB。 如果我們發出:
mvn clean test -Ppostgre然后,我們的測試Web存檔將與本地Postgresql服務器專用的數據源定義一起打包。
編寫一個簡單的測試
最終,我們新的JUnit測試與之前的測試沒有太大不同。 這是指示一些關鍵點的屏幕截圖。
?
上面代碼的一些注釋:
- Junit測試和基本注釋與上一篇文章相同。
- init()方法還是相同的,我們只是創建并保留一個新的SimpleUser實體
- 第一個主要區別是ShrinkWrap Api的使用,它利用了pom中的測試依賴項,并且我們可以將JBDC驅動程序定位為jar。 找到ShrinkWrap之后,請確保將其與其他資源和代碼一起打包在我們的test.war中。
- 盡管僅打包jdbc驅動程序還不夠,為了使其正常工作,我們需要在服務器中存在(配置)數據源。 我們希望這是自動的,這意味著我們不想在測試Wildfly服務器上進行任何預配置。 我們利用此功能在web.xml上定義數據源。 (在代碼中將其打開)。
- 一旦掃描了web.xml,應用程序服務器就會選擇該條目,并將在java:jboss / datasources / testpostgre名稱下配置一個數據源。
- 因此,我們將驅動程序,數據源定義捆綁在一起,我們有一個persistence.xml指向正確的數據源。 我們準備測試
- 我們的測試方法與以前的測試方法相似。
我們為H2檔案修改了一些資源,以便每次都打包相同的戰爭結構。 這意味著,如果我們使用-Ph2配置文件運行測試,則包含的web.xml為空,因為實際上我們不需要在此定義數據源,因為該數據源已由Wildfly部署。 但是persistence.xml是不同的,因為在一種情況下,定義的方言特定于H2,而在另一種情況下,所定義的方言特定于Postgre。
您可以遵循相同的原理并添加一個新的資源子文件夾,為另一個RDBMS(例如MySQL)配置數據源,添加適當的代碼以獲取驅動程序并將其打包。
- 您可以在此bitbucket repo-tag上獲得此帖子的代碼 。
資源資源
- Shrinkwrap解析器API頁面 (此強大API的許多漂亮示例)
- 定義Wildfly 8.1的數據源
翻譯自: https://www.javacodegeeks.com/2014/07/java-ee7-and-maven-project-for-newbies-part-7.html
java ee maven
總結
以上是生活随笔為你收集整理的java ee maven_针对新手的Java EE7和Maven项目–第7部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: crv安卓手机投屏教程(crv安卓)
- 下一篇: linuxu盘挂载的命令(linux u