2013-12-09 5 views
1

2 가지 버전의 Maven 아티팩트가 있습니다. A1, A2, B1, B2라고 할 수 있습니다. B1은 A1에 의존하고, B2는 A2에 의존한다. A1과 A2는 매우 유사합니다. A1이 Java 7을 사용하고 A2가 Java 8과 람다를 사용한다고 가정 해 봅시다. 모든 아티팩트는 고객이 사용하며 경우에 따라 환경에 잘못된 아티팩트를 설치합니다.Maven - 런타임에 이슈를 선택하십시오.

기본 A 이슈를 만들고 싶습니다. A1과 A2는 A를 상속하고 사용자 지정 기능과 A_Client를 추가하고 Ax (xxx) 모듈이 제공해야하는 몇 가지 속성 (JDK 및 일부 다른 항목)을 기반으로 runtime에서 선택하려고합니다. 사용하십시오. 이렇게하면 고객이 A_Client를 설치해야하며 올바른 버전에 대해 걱정할 필요가 없습니다.

B1과 B2는 동일합니다. 유일한 차이점은 Ax 종속성입니다. A1과 A2를 어떻게 든 병합 할 수 있다면 A_Client에만 의존하는 클라이언트 용 B 아티팩트 만 사용할 수 있습니다. 이렇게하면 B 버전의 지옥도 없앨 것입니다.

그래서 질문 : runtime에 종속성을 결정할 수 있습니까? 내 생각 엔 OSGi 또는 사용자 정의 클래스 로더를 사용하는 것이 가능할 수 있지만, 두 영역 모두에서 매우 제한된 지식을 가지므로 어떤 도움도 받으실 수 있습니다.

+0

참고 : '제공된'범위는 런타임에 마술처럼 나타날 아티팩트를 위해 설계되었습니다. 그러나 나는 적절한 유물이 선택되었는지에 대한 경험이 없습니다. 나는 지식이있는 사람에게 대답을 남겨 둘 것이다. –

+1

jar를 폴더에 넣고 다음과 같이 특정 속성을 기반으로 classpath에 추가합니다. http://stackoverflow.com/questions/1010919/adding-files-to-java-classpath-at-runtime – ieugen

답변

0

메이븐

Maven은 빌드 도구이므로 런타임에 도움이되지 않습니다. different profiles based on the used JDK을 활성화 할 수도 있지만 시스템을 빌드하는 시스템을 기반으로합니다. 시스템을 실행하는 시스템이 아닙니다.

OSGI는

아직 OSGI를 사용하지만 내가 아는 것은 매우 different deployment and runtime model 점입니다하지 않았다. 고객이 잘못된 버전을 배포하는 것을 막기 위해 노력을 정당화하지 않습니다.

배포 과정

이 모든 것이 기술적 솔루션이 해결해야하지. 잘못된 이슈 배치는 조정 된 배치 프로세스로 확실히 해결되어야합니다. 생각해 보면 ..

  • Why 잘못된 이슈를 배포 했습니까?
  • 문서화 된 배포 프로세스가 있습니까? 프로세스가 어떻게 변경되어야합니까?
  • 이슈를보다 구별 할 수 있습니까? 이름을 바꿀 수 있니?
  • 빨리 실패 할 수 있습니까? 이미 사용중인 경우가 아니라 배포가 실패해야합니다.
관련 문제