2011-03-02 6 views
3

저는 Grails 초보자입니다. 이클립스에서 잘 작동하는 앱이 있지만 프로덕션 환경에서 배포 할 때 종속성이 누락되어 넘어진다.Grails 의존성 해상도

종속성 보고서를 실행하면 모든 종속성이 '빌드'에 대해 자동으로 표시되지만 '런타임'에는 없음이 표시됩니다.

종속성을 런타임에서 마이 그 레이션하는 가장 좋은 방법은 무엇입니까 (희망 사항).

또한 sanitizer 플러그인을 사용하고 있습니다. 이것은 잘 실행되지만 '런타임'에 빠진 종속성이 있으므로 넘어집니다. 예를 들어 BuildConfig.groovy ("org.owasp.antisamy : antisamy : 1.4.3")에 의존성 중 하나를 수동으로 추가하면 grails가 다음 오류로 넘어갑니다.

로더 제약 위반 : 로더 of) 이름이 "org/xml/sax/SAXParseException"인 다른 유형의 로딩을 시작했습니다.

이 클래스 경로 문제라고 가정하고 있지만 수동으로 종속성을 추가 할 때 이것이 왜 발생하는지 잘 모르겠습니다. - 틀림없이 항상 존재하니?

답변

2

맞습니다. 누락 된 런타임 종속성을 BuildConfig.groovy에 추가해야합니다. 가장 간단한 방법은 플러그인의 BuildConfig.groovy에서 앱의 복사본으로 복사하는 것입니다. 또한이 grails plugin을 위해 JIRA를 올려서 업스트림을 수정해야합니다.

Maven 저장소에있는 많은 jar 파일은 pom 파일에 종속성이 올바르게 정의되어 있지 않습니다. 이행 성을 전환하여, BuildConfig.groovy에서 그 문제를 해결하는 방법이있다 :

대신 당신은 또한 예를 들어, 사용하여 특정 종속성을 제외하고 실험 할 수 '전이 = 거짓'의
runtime('org.owasp.antisamy:antisamy:1.4.3') { 
    transitive = false 
} 

excludes "xml-apis", "xerces" 

'런타임'클로저 안에 있습니다.

+0

우수 - 감사합니다. Sherlock Holmes를 실행하는 대신 런타임 문에 의존성을 자동으로 가져 오는 방법은 없습니다. excludes 문은 나의 두 번째 문제점을 분류합니다. 난 그냥 수동으로 그들을 추가하는 것을 기억해야합니다. – JohnnyD