여기 질문은 "메이븐 빌드에서 여러 유물"내 변화입니다. 내 응용 프로그램은 EAR로 패키징 된 EJB 서버이지만 다른 클라이언트 응용 프로그램에서 사용할 클라이언트 JAR도 노출합니다. 이 jar에는 EJB 인터페이스, facade 클래스 및 일부 헬퍼가 포함되어 있습니다.메이븐 (EJB) 프로젝트는
Maven 방식은 프로젝트 당 하나의 아티팩트 (PIF)가 있다는 것을 알고 있습니다. 하지만 두 소스 (서버 EAR 및 클라이언트 JAR)는 동일한 소스 트리 (예 : EJB 및 '홈'인터페이스)에서 서버 및 클라이언트 공유로 빌드해야합니다.
어떻게하면 Maven에서이 작업을 수행 할 수 있습니까?
두 개의 POM이 포함 된 프로젝트 (예 : server-pom.xml & client-pom.xml)가 있습니까? 나는 또한 하나의 파울 스풀로 클라이언트와 서버를 빌드하는 데 사용할 수있는 부모 POM (pom.xml)을 가질 수 있다고 생각하고 있었습니까? 그러나 서버는 어셈블리 (tar/gzip)를 거쳐야하기 때문에 '패키지'단계 이후에 수명주기가 다른 반면 클라이언트는 '패키지'이후에 완료되며 저장소에 간단히 설치할 수 있습니다.
이 문제를 해결하는 가장 좋은 방법에 대한 조언이나 경험이 있으십니까?
우수! 그것을 시도하게하십시오. –
@Pascal, 이것은 EJB 클라이언트가 동일한 다중 모듈 프로젝트 내에서 다른 모듈의 종속성 인 경우를 제외하고는 잘 작동합니다. 첫째, EJB 클라이언트는 자체 폴더가 없으므로 부모 모듈 목록에서 중첩 모듈로 사용할 수 없습니다. EJB 모듈의 부산물 일뿐입니다. 두 번째로, EJB 클라이언트 아티팩트는 패키지 단계에서만 생성되므로 리액터는 결합 된 클래스 경로에 어쨌든이를 추가 할 수 없습니다. –
그래서이 방법을 포기하고 EJB 클라이언트에 대한 명시 적 모듈을 만들어야 만하는 것 같습니다. 그러나 이것은 새로운 'ejb-client'모듈이 Java 소스를 메인 'ejb'모듈과 공유해야한다는 것을 의미합니다 (EJB 인터페이스는 공유됩니다). 나는 주 'ejb'모듈에서 소스를 유지하고 'ejb-client'모듈이 동일한 소스 폴더 (예 : ../ejb/src)를 가리 키도록 구성한다고 가정합니다. –