2013-04-05 2 views
4

하나의 Maven 프로젝트에 "코어"와 "웹"피스가 있습니다. 나는 그것을 여러 모듈로 변환하려고 시도하고있다.Maven 다중 모듈 프로젝트의 자동 종속성

"웹"패키지를 가져 와서 새 프로젝트에 넣었습니다. 의존성으로 핵심 프로젝트를 추가했으며 Eclipse 내에서 클래스를 참조 할 수 있습니다. "코어"프로젝트는 빌드 할 때 "웹"프로젝트의 WEB-INF\lib에 정확하게 나타납니다.

"핵심"프로젝트의 클래스가 "웹"프로젝트의 @Autowired 인 경우 문제가 발생합니다.

이 특별한 경우에는 "핵심"의 서비스 클래스를 "웹"프로젝트의 웹 서비스 클래스 중 하나에 autowiring하고 있습니다. 핵심 서비스가있는 패키지를 내 "웹"응용 프로그램 구성의 내 context:component-scan에 추가하면 해당 서비스를 찾는다. 그러나 서비스는 내가 참조하는 엔티티 관리자 팩토리를 찾는 엔티티를 참조하는 저장소를 참조합니다. "핵심"프로젝트에서 내 응용 프로그램 컨텍스트로 구성되었습니다.

그래서 "핵심"프로젝트의 context:component-scan이 어쩌면 발생하지 않는 것 같습니까? 또는 픽업 된 클래스가 "웹"프로젝트에서 사용 가능하지 않을 수 있습니까?

전 다중 모듈 프로젝트에 완전히 익숙합니다. 누군가가 저를 올바른 방향으로 시작하여이 문제를 해결할 수 있다면 크게 고맙겠습니다.

이클립스에서 실행중인 플러그인 실행과 함께 m2e를 사용하고 있습니다. 그러나 명령 줄에서 mvn jetty:run을 수행 할 때 동일한 문제가있는 것 같습니다.

답변

5

웹 모듈 응용 프로그램 컨텍스트에서 핵심 모듈 응용 프로그램 컨텍스트를로드해야합니다. 그렇지 않으면 핵심 응용 프로그램 컨텍스트에 정의 된 bean을 인식하지 못합니다. 적절한 해결 방법은 Application context from other maven module cannot be loadedSpring import application context from another project에 대한 답변을보십시오.
Maven을 사용하여 다중 모듈 Spring 프로젝트를 만드는 방법을 설명하는 post을 멋지게 볼 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 이것은 작동하는 것 같습니다. 여러분이 신경 쓸 필요가 없다면 더 빠른 질문을 하나드립니다 ...이 모듈화 유형에 일반적으로 받아 들여지는 해결책입니까? 필자가 요구하는 유일한 이유는 필자가 "핵심"프로젝트를 배포하는 경우 누군가 제대로 작동하게하려면 응용 프로그램 컨텍스트의 이름을 적어도 알고 있어야하기 때문입니다. 이 모든 것이 내부적이기 때문에 문제는 아니지만 적어도 취약한 방식으로하고 싶습니다. 다른 모듈에로드해야하는 응용 프로그램 컨텍스트에 대한 특정 명명 규칙이 있습니까? – Luke

+0

응용 프로그램 컨텍스트를 내보낼 지 확실하지 않습니다. 핵심 라이브러리에 의해 노출 된 주요 서비스로 이러한 컨텍스트를 작성하고 소비자가 처리하도록하는 방법에 대한 좋은 예를 제공하는 것이 좋습니다. 이것은 분명히 문서화 된 API와 함께 내 생각에 트릭을 수행해야합니다. –

+0

좋아요! 다시 한번 감사드립니다. – Luke

관련 문제