2012-06-03 8 views
34

私たちには、いくつかのクライアントがライブラリ(いくつかのサーブレット、デスクトップアプリケーションなど)で使用するエンティティライブラリがあります。エンティティライブラリは、JPA-Annotatedクラスと最も顕著なpersistence.xmlで構成されています。mavenを使用してライブラリjarにpersistence.xmlをどこに置くか?

すべてのプロジェクトはmavenを使用して設定されています。

persistence.xmlファイルはどこに置かれるべきですか?そのエンティティライブラリのjarファイルの中に配置する必要があり、mavenを使ってこれを設定する方法がわかりません。

は(私達はちょうどいくつかの小さなプロジェクトにプロジェクトを分割している)

「」「UPDATE」「」これについて明確にするために、persistence.xmlのと別のものを含む1のMavenプロジェクトAは、(そこにありますB)そのプロジェクトに依存しています。私は、EntityManagerをA内で使用しようとすると、persistence.xmlをsrc/main/resources/META-INF/persistence.xmlに置きます。問題はありません。insidie B:何も動作しません。私はpersistence.xmlのが発見されていない疑いがあるが、それは、ターゲットの瓶に存在する

[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 

のEclipseLinkは、次のような警告を与えます。

答えて

69

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

+3

は私のために完全に働きました。 META-INFフォルダを作成し、そこにpersistence.xmlを置く必要がありました。 – Sorter

6

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

10

WEB-INF /クラス/ META-INFに置かれたとき、私は唯一のドキュメントは助言と同じように、私のWARで動作するようにpersistence.xmlを得ている:

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が動作します。

+1

これは私のユースケースに役立ちましたが、WARの中で直接ではなく、構成JAR(おそらくはWAR)の 'persistence.xml'ファイルの周りにある質問には向いていません。 'WEB-INF/classes/META-INF'のヒントはかなり役に立ちます。 –

2

maven pom.xmlファイルでは、リソースディレクトリを追加する必要があるため、eclipseのbuild-pathに手動で追加する必要はありません。

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

は、以下を参照してください。http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

+4

代わりに 'src/main/resources'に入れてください。これはmavenのデフォルトであり、自動的に追加されます –

+0

thats true、これを指摘してくれてありがとう – eeezyy

関連する問題