web-dev-qa-db-ja.com

Mavenを使用してpersistence.xmlをライブラリjarに配置する場所

職場では、ライブラリのいくつかのクライアント(いくつかのサーブレット、デスクトップアプリケーションなど)によって使用されるエンティティライブラリがあります。エンティティライブラリは、JPAアノテーションが付けられたクラスで構成され、最も顕著なのはpersistence.xmlです。

すべてのプロジェクトは、mavenを使用して構成されます。

Persistence.xmlファイルはどこに置くべきですか?そのエンティティライブラリのjarファイル内に配置する必要があり、mavenを使用してこれを構成する方法がわかりません。

(プロジェクトをいくつかの小さなプロジェクトに分割しています)

'' '更新' ''これを明確にするために、persistence.xmlを含む1つのMaven-Project Aと、そのプロジェクトに依存する別のMaven-Project A(B)があります。 AでEntityManagerを使用しようとすると、Aのsrc/main/resources/META-INF/persistence.xmlにpersistence.xmlを配置しました。

EclipseLinkでは次の警告が表示されます。

[EL Warning]: The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.  Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element

Persistence.xmlが見つからないと思いますが、ターゲットjarに存在します。

37
scravy

@Daveが上で述べたように、src/main/resourcesは場所です。 persistence.xmlになると、META-INFフォルダーに配置する必要があります。結論として:src/main/resources/META-INF/persistence.xml

77
maba

ドキュメントがアドバイスするように、WEB-INF/classes/META-INFに配置された場合、persistence.xmlがWARで機能するようになりました。

http://docs.Oracle.com/cd/E19159-01/819-3669/bnbrj/index.html は次のように述べています:

永続性ユニットをクラスのセットとしてWARファイルにパッケージ化する場合、persistence.xmlはWARファイルWEB-INF/classes/META-INFディレクトリ。

Eclipseプロジェクトの小道具で、これをビルドパスに追加しました。

src\main\resources

私のMavenプロジェクトには、次の場所にpersistence.xmlがあります。

src\main\resources\META-INF\persistence.xml

Maven clean installを実行すると、WARが次のように構築されます。

WEB-INF\classes\META-INF\persistence.xml

このWARをTomcat 7のwebappsフォルダーにドロップすると、適切にデプロイされ、JPAが機能します。

12
J Slick

XML構成ファイルは、ほとんどの場合、パッケージ階層内のsrc/main/resourcesに属します(Javaソースファイル)と同じです。これらのファイルは、同じ階層のアーティファクトにコピーされます。

5
Dave Newton

Maven pom.xmlファイルにリソースディレクトリを追加する必要があるため、Eclipseのビルドパスに手動で追加する必要はありません。

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

参照: http://maven.Apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

2
eeezyy