2013-08-16 4 views
0

내 다중 모듈 프로젝트는 공용 (오픈 소스) 및 비공개 (공개되지 않은) 모듈로 구성됩니다. master-public과 master-private을 참조하는 master-all pom 파일을 만들어서 일부 플러그인 & 명령이 모든 프로젝트 (예 : cobertura)를 인식하도록해야합니다. master-all은 master-private을 참조 할 때 비공개가됩니다.maven 다중 모듈 프로젝트에서 parent pom을 참조하지 마십시오

문제는 마스터 - 대중이 그 부모를 참조해야한다는 것입니다 마스터 - 모든 공용 모듈의 사용자는이를 구축 할 수 없습니다, 그래서 개인입니다 : 마스터에

<groupId>group</groupId> 
<artifactId>master-public</artifactId> 
<parent> 
    <groupId>group</groupId> 
    <artifactId>master-all</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 

중첩 마스터 공개 -private는 maven을위한 해결책이 될 수 있지만, git의 엉망이 될 것입니다.

깨끗한 방법이 있습니까?

답변

2

마스터 - 비공개 참조를 마스터 공개로 설정할 수 있습니다. 그러나 제 경험상, 그것들을 완전히 분리시키는 것이 가장 좋습니다. 결국, 마스터 - 공개는 Maven Central에 배포 할 수있는 오픈 소스에 대해 더 많이 튜닝 될 것이며, 마스터 - 프라이빗은 내부 리포지토리에 배포되며 엔터프라이즈 환경에서만 의미있는 특별한 설정을 가질 수 있습니다. 마스터 프라이빗에서 절대적으로 필요로하는 것을 복사하여 마스터와 공용으로 분리하십시오.

+0

동의하지만 공개 + 비공개로 작업하려면 플러그인 (예 : cobertura)을 어떻게 마련 하시겠습니까? 예를 들어 공용 API의 테스트를 개인용 부분에 남기고 싶다면 두 가지 모두에 액세스 할 수있는 pom 파일에서 cobertura를 시작해야합니다. 그러면 테스트를 시작하기 전에 API가 인스트루먼트 될 수 있습니다. 간단한 의존성 개인 -> 공개. – Martin

+0

공개 제품의 테스트를 공개적으로 검토하는 것을 진지하게 고려해야합니다. 절대적으로 그렇게 할 수 없다면, 계측 된 바이너리를 Maven 저장소에 배치하고 비공개 테스트를 실행할 때 사용할 수 있습니다. – rec

+0

그것은 실제로 질문에 대답하지 않지만 다르게 작동하도록 권장하므로 답변을 확인합니다. 감사합니다. – Martin

관련 문제