2012-06-03 2 views
34

직장에서 여러 클라이언트가 라이브러리 (여러 서블릿, 데스크탑 응용 프로그램 등)에 사용되는 엔티티 라이브러리가 있습니다. 엔티티 라이브러리는 JPA 주석 클래스와 가장 두드러지게 persistence.xml로 구성됩니다.어디에서 maven을 사용하여 라이브러리 jar에 persistence.xml을 넣을 수 있습니까?

모든 프로젝트는 maven을 사용하여 구성됩니다.

여기서 persistence.xml 파일을 넣어야합니까? 해당 엔티티 라이브러리의 jar 파일 안에 위치해야하며 maven을 사용하여 구성하는 방법을 모르겠습니다.

'이것에 대해 명확하게하려면'업데이트는 '' '의 persistence.xml을하고 다른 하나를 포함하는 하나의 메이븐-을 투사가 ((우리는 여러 개의 작은 프로젝트로 프로젝트를 분할하는) B)는 그 프로젝트에 달려있다. 나는 persistent.xml 파일을 src/main/resources/META-INF/persistence.xml에 넣습니다. A에서 EntityManager를 사용할 때 아무런 문제가 없습니다. insidie ​​B : 아무것도 작동하지 않습니다.

는 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을 찾을 수없는 의심을하지만, 대상 항아리에 존재한다.

답변

69

마찬가지로 @Dave는 위에 언급 한 src/main/resources입니다. persistence.xml의 경우 META-INF 폴더에 배치해야합니다. 결론적으로 : src/main/resources/META-INF/persistence.xml.

WEB-INF에 위치 할 때 난 단지 내 WAR에서 작동하는 persistence.xml을 입수했습니다
+3

은 완벽하게 나를 위해 일했다. META-INF 폴더를 만들고 persistence.xml 파일을이 파일에 넣어야했습니다. – Sorter

6

XML 구성 파일은 대부분 Java 소스 파일과 마찬가지로 패키지 계층 구조로 src/main/resources에 속합니다. 이러한 파일은 동일한 계층 구조의 이슈로 복사됩니다.

10

은/클래스/META-INF는 문서 조언대로 :

다음

http://docs.oracle.com/cd/E19159-01/819-3669/bnbrj/index.html 상태를 지속성 유닛을 WAR 파일에 클래스 세트로 패키징하는 경우 persistence.xml은 WAR 파일의 WEB-INF/classes/META-INF 디렉토리에 있어야합니다. 내 이클립스 프로젝트 소품에서

, 나는 빌드 경로에 이것을 추가 :

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가 제대로 배포되고 JPA가 작동합니다.

+1

이것은 나의 유스 케이스에는 도움이되었지만, WAR에 직접있는 것이 아니라 구성 JAR (아마도 WAR)에있는'persistence.xml' 파일 주위에있는 질문에는 해당되지 않습니다. 'WEB-INF/classes/META-INF' 팁은 오히려 도움이되는 arcana입니다. –

2

maven pom.xml 파일에서 리소스 디렉토리를 추가해야하므로 수동으로 빌드 경로에 추가 할 필요가 없습니다.

<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

사실입니다. 이것을 지적 해 주셔서 고마워요. – eeezyy

관련 문제