2013-02-23 3 views
0

CDI를 사용하는 JBoss AS7에 배포 중이며 모두 잘 작동하는 전쟁 프로젝트 A가 있습니다. 하지만 다른 프로젝트 B에서 일부 클래스를 사용하고 싶습니다.이 클래스는 여러 가지 전쟁 프로젝트에서 공유하기 때문에 pom.xml에 추가하고 작업 영역 해상도를 설정했습니다.M2E Eclipse Maven 작업 공간 해상도 및 CDI

이 클래스는 전쟁 프로젝트 A에있는 한 완벽하게 작동하지만 B로 이동하면 CDI가 작동하지 않습니다. 다른 프로젝트 B에는 webapp/WEB-INF/beans.xml이 있지만 배포 된 A의 전쟁을 보면 프로젝트 B는 클래스 파일 만 포함하고 beans.xml은 포함되지 않은 jar로 표시됩니다. CDI는 내가 무엇을 시도하든간에 작동하지 않을 것입니다.

B에 포함 된 beans.xml을 얻는 유일한 해결책은 BSI 패키지를 war로 설정하는 것입니다.이 패키지는 패키징되지 않지만 jar라는 이름의 디렉토리로 배포되므로 JBoss가 충돌하고, 모든 라이브러리 A와 B가 두 번째로 사용됩니다.

나는이 상황에서 CDI를 사용하고 싶다면 정말로 하나의 괴물 프로젝트를 사용하는 것으로 제한되어 있습니까?

+0

B를 항아리로 사용하고 주요 전쟁 공지 사항을 작성하려면 구성 파일을 프로젝트의 클래스 경로에 넣어야합니다. 이는 META-INF 폴더를 의미합니다. –

+0

내가 쓰는 것처럼, 나는 이미 B를 단지로 사용한다. 그게 문제가 아니에요, 문제는 CDI가 beans.xml이없는 jar에서 가져온 클래스에서 작동하지 않으며, beans.xml을 사용하여 내보낼 수 없다는 것입니다. – Torque

+0

beans.xml 넣기 */src/main/resources * 폴더에 저장하십시오. 그런 다음 항아리로 만듭니다. –

답변

1

문제는 전쟁 프로젝트 구조를 jar 프로젝트로 따라가는 것이므로 구성 파일이 최종 프로젝트의 클래스 경로로 끝나지 않습니다. 이를 해결하려면 /src/main/resources 디렉토리로 이동하고 Maven은 빌드가 완료되었을 때이를 다시 할당 할 수 있습니다. Maven standard layout 설명을 살펴보십시오.

관련 문제