2011-02-26 3 views
8

Maven 로컬 저장소에 설치되어 있고 로컬에서 사용되고 있지만 배포 서버에서 사용할 수없는 종속성이 있습니다. 해당 종속성을 Class.forName(...)을 사용하여 사용하므로 배포 서버의 클래스 경로에서 누락 된 경우 아무런 문제가 없습니다.Maven이 의존성을 해결하지 못했다면 어떻게 무시할 것인가?

Maven이 의존성을 해결하지 못했다고 말할 수있는 방법이 있습니까?

<scope> 또는 <optional>이 문제를 해결할 수는 없지만, 종속성 가용성을 기준으로 프로필을 활성화/비활성화 할 수있는 방법이 있다면 <profiles>을 사용하여이를 수행 할 수 있습니다. 누락 된 의존성을 가정

+0

이 게시물을 보았습니까? @stepoverflow.com/questions/3720768/ignore-maven-dependency-during-specific-execution-phase – Stephan

+0

@Stephan 감사합니다. 다른 환경에서이 문제를 해결하기 위해 maven 프로파일을 찾았습니다. –

+0

프로필은 여러 개의 별도 빌드 환경을 가지고 정말 잘 작동합니다. 빌드 서버가 로컬과는 다른 위치에서'system' 의존성을 호스팅하기 때문에 우리는 이것을 직장에서 사용합니다. – jpaugh

답변

0

당신은 일반적으로 종속에서 종속성을 제거하고 참조로 이동하여 .m2/Settings.XML의를 통해 프로필 및 활성화의 조합을 사용할 수있는 지역 환경에서만 중요하다 의존성을 pom.xml (프로젝트 레벨 프로파일)의 프로파일에 추가하고 m2/settings.xml을 통해 프로파일을 활성화하십시오.

당신은 또한 당신의 pom.xml에서 completly 종속성을 제거하고 .m2/Settings.XML의 (사용자 수준 프로파일)에있는 프로파일

introduction to profiles 섹션을 참조로 종속성을 이동할 수

.m2/repository/local/dependency/1.0.0-Snapshot/local.jar

<profiles> 
    <profile> 
    <activation> 
     <file> 
     <exists>/home/user/.m2/repository/local/dependency/1.0.0-Snapshot/local.jar</exists> 
     </file> 
    </activation> 
    ... 
    </profile> 
</profiles> 
,369에서

파일의 존재 여부에 따라 위에서 언급 한 프로파일의 활성화를 요구 사항이 어쩌면 더 맞는 또 다른 방법

+0

내 질문에 볼 수있는 프로필 사용 방법과 내 질문에 대한 의견을 알고 있습니다. –

+0

프로필을 기반으로 파일 활성화를 추가 했으므로 도움이됩니다. – p1brunne

+0

크로스 시스템 솔루션이 아닙니다. 나는 (이 질문을하기 전에) maven 프로퍼티로 시도해 보았지만, 어떤 이유로 그것이 작동하지 않는다고 생각하지 못했습니다. –

4

짧은 대답 : 아니오.

긴 대답 : 공통 부분 또는 활성 프로필에서 종속성이 선언되면 Maven이 시도 할 때 해결할 수 있어야합니다. 그렇지 않으면 빌드가 실패합니다.

maven이 요청 된 동작을 허용하면 빌드 재현성에 많은 어려움이 있습니다. 당신의 pom.xml에서

  • 전화 외부 개미, 간부 - 받는다는 - 플러그인 또는 받는다는-antrun을 사용하여 :

    무명과 irreproducibility 당신을 위해 문제가되지 않는 경우, 여기를 수행하는 방법에 대한 힌트입니다 개미 코드

  • -plugin,
  • 는 어떤 경우에도 개미의 contrib의 trycatch 블록

에 포장 메이븐 개미 작업에서 artifact:dependencies를 사용, 난 강력하게 includin을 억제 g 그런 것들을 메이븐 빌드. 명령 줄에서 ant를 통해 호출되는 별도의 기능으로 사용하면 충분할 수 있습니다.

관련 문제