문제

다음 Maven 프로젝트가 설정되어 있습니다.

  • PM 코어
  • PM-WEB (PM 코어에 의존성)
이제이 프로젝트는 여러 클라이언트에 사용되지만 각 클라이언트마다 약간의 차이점이 있습니다. 대부분 구성 파일의 차이점이 있지만 일부 클라이언트에는 추가 Java 파일 (다른 클라이언트를 위해 설치되지 않을 수 있음)이 필요합니다.

나는 Maven과 함께 이것을 지원하는 방법에 대한 몇 가지 대안을 고려해 왔지만 여전히 완벽한 솔루션을 찾고 있습니다.

내가 생각할 수있는 가장 좋은 솔루션은 클라이언트 특정 구성 파일과 추가 Java 파일 또는 JSP를 포함하는 각 클라이언트 (예 : PM-Client1, ...)에 대해 별도의 Maven 프로젝트를 만드는 것입니다. 다음 단계는 PM-WEB 프로젝트와 클라이언트 프로젝트를 하나의 웹 프로젝트로 간주하는 것입니다. 즉, PM-WEB 프로젝트의 파일보다 클라이언트 프로젝트의 파일과 함께 파일과 1 전쟁 파일을 결합하도록하십시오.

더 구체적인 : 달리기 mvn package PM-Client1에서 PM-WEB에서 모든 것을 가져 와서 PM Client1의 파일을 추가/교체 한 다음 이것을 단일 전쟁으로 포장합니다.

문제는 Maven과 함께 이것을 달성하는 방법입니다.

도움이 되었습니까?

해결책

예,이 작업을 수행 할 수 있습니다 오버레이. 웹 페이지의 샘플은 정확히 당신이 말하는 것입니다.

프로젝트 구조의 경우 다음과 같은 것을 가질 수 있습니다.

.
|-- PM-Core
|-- PM-WebCommon (of type war, depends on core)
|-- PM-Client1 (of type war, depends on webcommon)
`-- PM-Client2 (of type war, depends on webcommon)

PM-Client1 및 PM-Client2에서 오버레이를 사용하여 PM-Webcommon 및 각 고객의 패키지 전쟁으로 "병합"하십시오.

업데이트 나는 모든 세부 사항을 다루지 않을 것이지만 전쟁 의존성을 유형의 범위로 선언한다고 생각합니다. runtime 오버레이를 사용할 때 필요한 경우 오버레이가 작동하는 방식입니다 (실제로 전체 오버레이는 일종의 해킹입니다). 이제 Eclipse 문제를 해결하기 위해 PM-Webcommon 프로젝트의 클래스가 포함 된 항아리를 만드는 것입니다. 그렇게하려면 사용하십시오 attachClasses 선택적 매개 변수를 설정하고 설정하십시오 true. 이것은 Maven에게 a를 만들도록 지시 할 것입니다 PM-WebCommon-<version>-classes.jar 그런 다음 PM-Client1의 종속성으로 선언 할 수 있습니다 ( provided 범위). 자세한 내용은 살펴보십시오 MWAR-73 그리고 MWAR-131. 이것은 또한 논의된다 자주하는 질문 전쟁 플러그인의. 이것은 권장되는 관행이 아니며 올바른 방법은 클래스를 별도의 모듈로 옮기는 것입니다 (그리고 이것은 내가 언급하고 싶은 다른 솔루션입니다).

업데이트 (201001018) : 나는 시도했다 attachClasses 매개 변수 및 그것은 플러그인의 버전 2.1-Beta-1과 함께 작동합니다.

다른 팁

당신은 사용할 수 있습니다 프로필 보다 http://maven.apache.org/guides/mini/guide-building-for-different-environments.html 그리고 사용 분류기 동일한 버전의 다른 빌드와 아티팩트를 구별합니다. 이 설정에서는 부모 프로젝트 IE에 따라 각 고객에 대한 추가 옵션 모듈을 만들 수 있습니다.
+ PM
++ PM 코어
++ pm-web
++ pm-client1
++ pm-client2

또는 사용 사용을 볼 수 있습니다 Maven 어셈블리 플러그인

질문에 대한 답을 비교하십시오 다른 전쟁 파일, 공유 자원 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top