Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
- Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
- Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
- Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
- Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
- Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
- Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
- Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
- Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
- Java EE 7 検証環境構築(9) jBatch 概要をおさえる
- Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
- Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
- Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
- Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
- Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
- Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
- Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)
Java EE 7 といいつつ、ここまでは、JBoss Tools を使って作成した、EARプロジェクト(Java EE 6)で確認してきたが、jBatch の確認を行うにあたって、EARプロジェクトをJava EE 7 に更新したい。
さてどうすればよいのかなと、JBoss Tools の最新のNightly ビルドとかインストールして 試してみるが、JBoss Central から作成される、EARプロジェクトは依然として Java EE 6 のままだった。
まぁ、JBoss Tools 自体とは別で提供されているだろうので、わずかな期待はしていたがしょうがない。
ということで、ググって、以下のサイトを発見!
WildFly 用の Java EE 7 maven アーキタイプだそう。
言われたとおりにしてみる。
Java EE 7 maven archetypes for WildFly
Using the Java EE EAR Project as a template you will need to do the following.
- In the parent POM modify the JBoss version properties for WildFly: version.jboss.maven.plugin : 8.0.0.Final, version.jboss.bom : 8.0.0.Final, version.jboss.as : 8.0.0.Final.
- Also in the parent POM dependency management you will need to replace the javaee-6.0 BOMs with the WildFly javaee-7.0 equivalents. Replace org.jboss.bom : jboss-javaee-6.0-with-tools : ${version.jboss.bom} : pom [import] with org.wildfly.bom : jboss-javaee-7.0-with-tools : ${version.jboss.bom} : pom [import]. Replace org.jboss.bom : jboss-javaee-6.0-with-hibernate : ${version.jboss.bom} : pom [import] with org.wildfly.bom : jboss-javaee-7.0-with-hibernate : ${version.jboss.bom} : pom [import].
- In the ejb module POM you will need to modify each of the managed dependencies to use the WildFly javaee-7.0 BOM managed versions. For example replace org.jboss.spec.javax.ejb : jboss-ejb-api_3.1_spec with org.jboss.spec.javax.ejb : jboss-ejb-api_3.2_spec.
- In the web module POM you will need to modify each of the managed dependencies to use the WildFly javaee-7.0 BOM managed versions. For example replace org.jboss.spec.javax.ws.rs : jboss-jaxrs-api_1.1_spec with org.jboss.resteasy : jaxrs-api.
You may find these links helpful: https://github.com/wildfly/wildfly/blob/master/spec-api/pom.xml, https://github.com/wildfly/boms/tree/master/jboss-javaee-7.0-with-tools,https://github.com/wildfly/boms/tree/master/jboss-javaee-7.0-with-hibernate.
I hope this helps.
プロジェクトの構成
親POMの修正
上記プロジェクト構成例では、tallarico の pom.xml の以下の点を修正する。
WildFly用、JBoss version プロパティ
- version.jboss.maven.plugin を 8.0.0.Final に修正
- version.jboss.bom を 8.0.0.Final に 修正
- version.jboss.as を 8.0.0.Final に修正
dependency management の groupId と artifactId をそれぞれ以下に
- org.wildfly.bom : jboss-javaee-7.0-with-tools : ${version.jboss.bom}
- org.wildfly.bom : jboss-javaee-7.0-with-hibernate : ${version.jboss.bom}
あと、上記サイトに記述はないが、maven.compiler のパラメータを、1.6 から 1.7 にしておく。
Java EE 7 では、Java SE 7 に対応している。
※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd"> <properties> <!-- <version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin> --> <version.jboss.maven.plugin>8.0.0.Final</version.jboss.maven.plugin> <!-- <version.jboss.bom>1.0.7.Final</version.jboss.bom> --> <version.jboss.bom>8.0.0.Final</version.jboss.bom> <!-- version.jboss.as>7.2.0.Final</version.jboss.as> --> <version.jboss.as>8.0.0.Final</version.jboss.as> <!-- <maven.compiler.target>1.6</maven.compiler.target> <maven.compiler.source>1.6</maven.compiler.source> --> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.source>1.7</maven.compiler.source> </properties> <dependencyManagement> <dependencies> <dependency> <!-- <artifactId>jboss-javaee-6.0-with-tools</artifactId> <groupId>org.jboss.bom</groupId> --> <groupId>org.wildfly.bom</groupId> <artifactId>jboss-javaee-7.0-with-tools</artifactId> <version>${version.jboss.bom}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <!-- <groupId>org.jboss.bom</groupId> <artifactId>jboss-javaee-6.0-with-hibernate</artifactId> --> <groupId>org.wildfly.bom</groupId> <artifactId>jboss-javaee-7.0-with-hibernate</artifactId> <version>${version.jboss.bom}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
EJBモジュールのPOM修正
dependency management の artifactId をそれぞれ以下に
- org.jboss.spec.javax.ejb : jboss-ejb-api_3.2_spec
- hibernate-jpa-2.1-api
※hibernateの記述は上記サイトにはない
※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd"> <dependencies> <dependency> <groupId>org.jboss.spec.javax.ejb</groupId> <!-- <artifactId>jboss-ejb-api_3.1_spec</artifactId> --> <artifactId>jboss-ejb-api_3.2_spec</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <!-- <artifactId>hibernate-jpa-2.0-api</artifactId> --> <artifactId>hibernate-jpa-2.1-api</artifactId> <scope>provided</scope> </dependency> </dependencies> </project>
WebモジュールPOM修正
dependency management の groupId と artifactId をそれぞれ以下に
- org.jboss.resteasy : jaxrs-api
- org.jboss.spec.javax.faces: jboss-jsf-api_2.2_spec
- org.hibernate.javax.persistence : hibernate-jpa-2.1-api
※修正箇所(および親要素)のみ抜粋(コメントアウトが初期値、コメントアウト行直下のが修正後の値)
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd"> <dependencies> <dependency> <!-- <groupId>org.jboss.spec.javax.ws.rs</groupId> <artifactId>jboss-jaxrs-api_1.1_spec</artifactId> --> <groupId>org.jboss.resteasy</groupId> <artifactId>jaxrs-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.jboss.spec.javax.faces</groupId> <!-- <artifactId>jboss-jsf-api_2.1_spec</artifactId> --> <artifactId>jboss-jsf-api_2.2_spec</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <!-- <artifactId>hibernate-jpa-2.0-api</artifactId> --> <artifactId>hibernate-jpa-2.1-api</artifactId> <scope>provided</scope> </dependency> </dependencies> </project>
上記編集後、プロジェクトのコンテキストメニューから、Maven - Update Project を実行する。