2013-06-23 2 views
7

나는 Gradle이 어떻게 작동하는지 배우고 있는데, 프로젝트 전이 의존성을 어떻게 해결하는지 이해할 수 없다.왜 Gradle에는 compile/runtime classpath에 전이 의존성이 포함되어 있지 않습니까?

  • PROJECTA : PROJECTA

을 하나 명의 의존성을 아무리 없습니다 : 외부 라이브러리

  • projectB에 대한 종속성의 몇 가지를 가지고

    지금은

    , 나는 두 개의 프로젝트가 내가 projectB를 만들 때, gradle은 projectB의 컴파일 또는 런타임 클래스 경로에서 projectA 종속성 (X 및 Y)을 포함하지 않습니다. 필자는 projectA의 dependencies를 projectB의 빌드 스크립트에 포함시킴으로써 작동하게 만들었을뿐입니다. 제 생각에는 그렇지 않습니다. 이러한 의존성은 projectB에 자동으로 첨부되어야합니다. 나는 뭔가를 놓치고 있다고 확신하지만 무엇을 알아 내지 못합니다.

    "lib dependencies"에 대해 읽었지만 외부 종속성이 아닌 here과 같은 로컬 프로젝트에만 적용되는 것으로 보입니다. 여기

    내가 루트 프로젝트에서 사용하는 build.gradle (PROJECTA 및 projectB을 모두 포함하는 하나)입니다 :

    version = '1.0' 
    dependencies { 
        compile 'com.company:X:1.0' 
        compile 'com.company:B:1.0' 
    } 
    

    그리고 이것이다 :

    buildscript { 
        repositories { 
         mavenCentral() 
        } 
        dependencies { 
         classpath 'com.android.tools.build:gradle:0.3' 
        } 
    } 
    
    subprojects { 
        apply plugin: 'java' 
        apply plugin: 'idea' 
    
        group = 'com.company' 
    
        repositories { 
         mavenCentral() 
         add(new org.apache.ivy.plugins.resolver.SshResolver()) { 
          name = 'customRepo' 
          addIvyPattern "ssh://.../repository/[organization]/[module]/[revision]/[module].xml" 
          addArtifactPattern "ssh://.../[organization]/[module]/[revision]/[module](-[classifier]).[ext]" 
         } 
        } 
    
        sourceSets { 
         main { 
          java { 
           srcDir 'src/' 
          } 
         } 
        } 
    
        idea.module { downloadSources = true } 
    
        // task that create sources jar 
        task sourceJar(type: Jar) { 
         from sourceSets.main.java 
         classifier 'sources' 
        } 
    
        // Publishing configuration 
        uploadArchives { 
         repositories { 
          add project.repositories.customRepo 
         } 
        } 
    
        artifacts { 
         archives(sourceJar) { 
          name "$name-sources" 
          type 'source' 
          builtBy sourceJar 
         } 
        } 
    } 
    

    이 사람은 PROJECTA 만 우려 프로젝트 B에서 사용하는 것 :

    version = '1.0' 
    dependencies { 
        compile ('com.company:projectA:1.0') { 
         transitive = true 
        } 
    } 
    

    사전에 도움을 주셔서 감사합니다. 사과하십시오. 내 나쁜 영어로.

  • +0

    2 가지 :'프로젝트를 컴파일 : 전이는 다음과 같이 지정해야합니다 같은 멀티 모듈 프로젝트에서 다른 프로젝트에 대한 기본 및 의존성으로 설정되어 있습니다 ("PROJECTA") ' – stigkj

    +0

    비슷한 질문이 있습니다. http://stackoverflow.com/questions/29661824/android-aar-dependencies#. 지금까지 나는 그것을 작동시키지 못했습니다. –

    답변

    1

    마지막으로 문제는 스크립트에서 발생하지 않았습니다. 나는 방금 gradle의 캐시와 각 프로젝트의 빌드 폴더를 지워서이 작업을 수행했습니다.

    +1

    지난 6 시간 동안이 작업을 수행하기 위해 진지하게 노력했으며 캐시였습니다. 먼저 거기를 확인 했어야합니다. 감사! –

    1

    다음 줄을 projectB의 종속 항목에 추가하십시오.

    컴파일 프로젝트 ('PROJECTA')

    관련 문제