2011-11-01 1 views
7

Grails 1.3.7을 사용하고 있고 httpclient의 버전 4.0을 내 클래스 경로에서 (4.1에 찬성하여) 얻는 방법을 알 수 없습니다. 플러그인을 사용하는 4.1의 no-args 생성자 때문에이 작업을 수행해야합니다.gracl에서 내 classpath의 httpclient 버전 4.0을 얻는 방법

grails 'dependency-report'를 실행하면 런타임에 4.1이 사용되어야합니다. 그리고 제가 물건을 .war로 포장한다면 그것은 있습니다. 그러나 버전 4.0은 run-app를 사용할 때 classpath에서 끝납니다. 컴파일 할 때 일부 grails 내부 용으로 (올바르게) 사용된다는 점에 유의하십시오. 어떻게 든 내 classpath에서 여전히 끝나고 있습니다.

은 -> 나는 4.0의 .jar에서 오는 내 클래스 경로에 끝나는 일어나고을 중지 위치를 정확히 알아낼 수

(실행 응용 프로그램을 통해 실행하는 경우 어디에있는 모든 및 .jar 넣어?) -> 내부 용으로 4.0 대신 4.1로 컴파일하도록 grails에 지시 할 수 있습니까 (이 경우에는 org.codehaus.groovy.modules.http-builder 모듈에 의해 http-builder가됩니까?) 가장 좋은 해결책은 아닙니다. , 테스트 할 때마다 .war로 모든 것을 패키징하는 것은 즐겁지 않습니다.

도움을 주시면 대단히 감사하겠습니다.

난 그냥 같은 일을 겪었

답변

7

, 당신의 BuildConfig.groovy에 다음을 추가

dependencies {   
     build 'org.apache.httpcomponents:httpcore:4.1.2' 
     build 'org.apache.httpcomponents:httpclient:4.1.2' 
     runtime 'org.apache.httpcomponents:httpcore:4.1.2' 
     runtime 'org.apache.httpcomponents:httpclient:4.1.2' 
} 

환호

+0

사실 'build': release : 1.0.0.RC3 '에'exported = false '를 추가하여 플러그인을 수정했지만이를 해결하기 위해 해결책을 수락했습니다. 자체 코드 및 플러그인 종속성 파일을 수정할 필요가 없습니다. 결론은 '빌드'지정자입니다. 그 범인입니다. 감사 – Peter

1

당신은 제외를 추가하여 클래스 경로 떨어져 HttpClient를 4.0를 얻을 수 있습니다 BuildConfig.groovy에 있습니다. 어떤 플러그인이 grails dependency-report 명령을 사용하여 종속성으로 선언하는지 파악합니다.

포함 된 플러그인을 찾으면 BuildConfig.groovy 플러그인 섹션에서 제외 할 수 있습니다. 예 :

plugins { 
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1 
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1 
     excludes 'httpclient' 
    } 
} 

종속성으로 선언해야 HttpClient를 4.1에서 인수 없음의 생성자에 의존하는 플러그인. 그렇지 않으면 플러그인 작성자에게 문제점을 열어야합니다. 이 문제를 해결하려면 위에서 설명한 leebutts와 같이 dependencies 섹션에 httpclient 4.1을 나열하십시오.