2014-07-11 4 views
0

내 Grails 2.4.1 구성에서 체인 확인자를 만들려고했습니다. 제 3 자와 myproject라는 두 개의 상점을 연결합니다. 체인 처리 된 해결 프로그램의 이름은 "내부"입니다.대소 문자 구분에 따른 아이비 (Ivy) 해결 오류

:::::::::::::::::::::::::::::::::::::::::::::: 
::   UNRESOLVED DEPENDENCIES   :: 
:::::::::::::::::::::::::::::::::::::::::::::: 
:: javax.validation#validation-api;1.1.0.Final: java.text.ParseException: inconsistent module descriptor file found in 'http://<MY_REPO>/3rdpartycache/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom': bad revision: expected='1.1.0.Final' found='1.1.0.FINAL'; 
:::::::::::::::::::::::::::::::::::::::::::::: 

이 때, 대신, 난 그냥 3rdparty 해결 프로그램을 사용하여,이 자원 :

3rdpartyLib: bad revision found in http://<MY_REPO>/3rdpartycache/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom: expected='1.1.0.Final found='1.1.0.FINAL' 

나는 또한 해결되지 않은 종속성에 대한 경고 다음을 얻을 : 나는 체인 해결을 사용할 때, 나는 다음과 같은 오류가 발생합니다 찾을 수 있습니다 :

|Downloading: validation-api-1.1.0.FINAL.pom.sha1 
    found javax.validation#validation-api;1.1.0.FINAL in 3rdpartyLib 
    found org.grails.plugins#tomcat;7.0.54 in cache 
... 
downloading http://<MY_REPO>/3rdpartycache/javax/validation/validation-api/1.1.0.FINAL/validation-api-1.1.0.FINAL.jar ... 
|Downloading: validation-api-1.1.0.FINAL.jar.sha1 
    [SUCCESSFUL ] javax.validation#validation-api;1.1.0.FINAL!validation-api.jar (88ms) 
|Downloading: jandex-1.1.0.Final.pom.sha1 
    found org.jboss#jandex;1.1.0.Final in 3rdpartyLib 
    found javax.validation#validation-api;1.1.0.FINAL in cache 
    [1.1.0.FINAL] javax.validation#validation-api;1.1.0.Final **(forced)** 

재미있는 것은 "강제적 인"로그 문입니다. 여기서 FINAL 버전을 발견했습니다. ,

grails.project.dependency.resolver = "ivy" // or maven 
grails.project.dependency.resolution = { 

    inherits("global") { 
     // specify dependency exclusions here; for example, uncomment this to disable ehcache: 
    } 
    log 'info' // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose' 
    checksums true // Whether to verify checksums on resolve 
    legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility 
    repositories { 
     inherits true // Whether to inherit repository definitions from plugins 

     resolver internalChainResolver() 
     //  resolver thirdPartyLibrariesResolver() 
     grailsHome() 
     grailsCentral() 

    } 

    dependencies { 
     test "org.grails:grails-datastore-test-support:1.0-grails-2.4" 
     build 'javax.validation:validation-api:1.1.0.FINAL' 
     runtime 'org.springframework:spring-expression:4.0.5.RELEASE' 
     runtime 'org.springframework:spring-aop:4.0.5.RELEASE' 
     runtime 'org.grails:grails-datastore-gorm-hibernate-core:3.1.1.RELEASE' 
     runtime 'org.javassist:javassist:3.18.1-GA' 
     runtime 'com.fasterxml:classmate:1.0.0' 

    } 

    plugins { 
     // plugins for the build system only 
     build ":tomcat:7.0.54" 
     // plugins for the compile step 
     compile ":scaffolding:2.1.1" 
     compile ':cache:1.1.6' 
     compile ":asset-pipeline:1.8.11" 

     // plugins needed at runtime but not for compilation 
     runtime ":hibernate4:4.3.5.4" // or ":hibernate:3.6.10.16" 
     runtime ":database-migration:1.4.0" 
     runtime ":jquery:1.11.1" 

    } 
} 

나는 통찰력을 반복적으로 검색 한 독서의 많은 일을했다 : 여기

def internalChainResolver() 
{ 
    ChainResolver resolver = new ChainResolver() 
    resolver.name = "internal" 
    resolver.dual = true 

    resolver.add thirdPartyLibrariesResolver() 
    resolver.add myprojectLibraries() 

    def ivySettings = new IvySettings() 
    ivySettings.defaultInit() 
    resolver.settings = ivySettings 

    return resolver 
} 

def thirdPartyLibrariesResolver() 
{ 
    IBiblioResolver resolver = new IBiblioResolver() 
    resolver.name = "3rdpartyLib" 

    resolver.root = "http://<MY_REPO>/3rdpartycache/" 
    resolver.m2compatible = true 

    def ivySettings = new IvySettings() 
    ivySettings.defaultInit() 
    resolver.settings = ivySettings 

    return resolver 
} 

def myprojectLibraries() 
{ 
    IBiblioResolver resolver = new IBiblioResolver() 
    resolver.name = "myproject" 

    resolver.root = "http://<MY_REPO>/myproject/" 
    resolver.m2compatible = true 

    def ivySettings = new IvySettings() 
    ivySettings.defaultInit() 
    resolver.settings = ivySettings 

    return resolver 
} 

그리고 해결과 해결 블록은 다음과 같습니다

나는 다음과 같은 방법으로 리졸버를 정의 그러나 아직 답을 보지 못했습니다. 나는 아이비 지식의 깊이와 Grails와의 통합을 채굴했다.

체인 조사기를 만드는 방법에 대한 제안을 찾고 있습니다.이 프로젝트와 다른 프로젝트를 위해 여러 개의 라이브러리를 추가해야합니다.

### EDIT ###

는 그 MyProject를가 3rdparty 전에 첨가되도록 체인 리졸버 변경. 위에서 설명한대로 실패합니다.

체인 리졸버가 3rdparty 리졸버 만 포함하도록 변경했습니다. 이것은 또한 실패합니다. 이상하게도 내 의견이나 이해 부족으로, 단 하나의 체인 결정자 만 포함하는 체인 결정자가있는 경우 주어진 결정자를 대신 할 수 있어야합니다.

체인 리졸버를 사용하면 해상도가 떨어지는 것은 당연하지 않습니다. 우리는 chain resolver를 사용하지 않을 때, .m2 캐시와 "무언가"(Ivy를 지정 했더라도 실제로 m2 캐시를 읽는 데 사용되는 maven)를 통해 해결이 이루어지고 있다고 생각합니다. 케이스 걱정. 특히 Ivy 인 Chain Resolver를 만들 때, Ivy는 대소 문자 차이를 처리하지 않습니다. 순전히 가설.

답변

1

발생하는 문제는 jar (빌드)에 사용중인 범위 때문일 가능성이 큽니다. Grails가 아이비를 사용하여 종속 항아리를 해결할 때, 끌어 내리는 모든 항아리의 전이 종속성을 검색합니다. 일어날 가능성이있는 것은 validation-api jar에 대해 전이 의존성을 갖는 "런타임"종속 항아리가 있다는 것입니다. 범위를 "런타임"으로 업데이트하면 문제가 해결됩니다.

0

다음은 오류 메시지

3rdpartyLib: bad revision found in http:///3rdpartycache/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom: expected='1.1.0.Final found='1.1.0.FINAL'

확인 POM 파일의 버전 필드의 끝에있는 문제입니다. 버전 필드는 대소 문자를 구분합니다. 저장소 문제처럼 보입니다.

+0

아마도 나는 명확하지 않았습니다.이것은 chain resolver를 사용하지 않고 문제를 해결하지만, chain resolver를 사용할 때는 해결되지 않습니다. 차이점은 chain resolver 버전이 3rdparty resolver와 myproject resolver를 연결한다는 것입니다. 연결된 리졸버를 internal이라고합니다. 제 3자를 대신하여 내부를 대체하면 해결됩니다. 대신에 thirdparty를 포함하는 internal을 사용하면 해결되지 않습니다. 이것은 myproject 리졸버의 추가만을 의미하기 때문에 에러는 나에게 이해가되지 않는다. –

+0

Highighted 샘플은 Thirdparty 라이브러리에서 잘못된 버전을 찾았 음을 나타내며 unchained 버전에서는 불평하지 않습니다. | Downloading : validation-api-1.1.0.FINAL.pom.sha1 found.validation # validation-api; 3rdpartyLib의 1.1.0.FINAL 발견 org.grails.plugins # tomcat; 캐시 7.0.54 ... 다운로드 http : // /3rdpartycache/javax/validation/validation-api/1.1.0.FINAL/ validation-api-1.1.0.FINAL.jar ... | 다운로드 중 : validation-api-1.1.0.FINAL.jar.sha1 [SUCCESSFUL] javax.validation # validation-api; 1.1.0.FINAL! 유효성 검사 -api.jar (88ms) –

+0

이 응답에 대해 투표를 거절하면 문제가 다시 나타납니다. 아무런 차이가 없어야했는지, 적어도 체인화 된 해결자가 사용되는 경우에만이 오류가 나타나는 이유를 설명하지 않았 음을 고려하지 않았습니다. –