2016-12-25 1 views
1

폴더 구조에서 서로 옆에 3 개의 Java 프로젝트가 있습니다 (Proj1, Proj2Proj3). Proj1Proj2에 달려 있으며 Proj3에 따라 다릅니다.Gradle이 종속성 체인에서 프로젝트를 찾을 수 없습니다.

rootProject.name = 'Proj3' 

rootProject.name = 'Proj2' 

include ':Proj3' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 

rootProject.name = 'Proj1' 

include ':Proj2' 
project(':Proj2').projectDir = new File(settingsDir, '../Proj2') 

gradle.build 파일 :

0,123,516이 여기를

gradle.settings 파일입니다
apply plugin: 'java' 

dependencies { 
    compile project(':Proj3') 
} 

1

apply plugin: 'java' 

dependencies { 
    compile project(':Proj2') 
} 

에 대한 두 번째 및 세 번째 프로젝트는 Gradle을하여 잘 구축되어 있지만 나는 그것이

문제는 '프로젝트를 평가 발생 뿌려 1을 빌드 할 때 : Proj2를 : '. 프로젝트 ': Proj2'에서 ': Proj3'경로가있는 프로젝트를 찾을 수 없습니다.

compile project(':Proj3') (빌드는 Proj2)을 가리 킵니다. 스택 추적은

org.gradle.tooling.BuildException 시작 형식 'EclipseProject'Gradle을 분배 'https://services.gradle.org/distributions/gradle-3.1-bin.zip'를 사용하여 모델을 가져올 수 없습니다.

제 2의 프로젝트가 빌드 될 때 제 3의 과태가 왜, 그리고 제 1의 빌드가 갑자기 제 3의 과태를 찾을 수 있는지 모른다. 첫 번째 관심사는 "Project and External Dependencies (프로젝트 및 외부 종속성)"폴더에 이미 포함 된 이후에 2nd가 어떻게 검색하는지에 대한 이유입니다.

어떻게 작동합니까?

답변

0

나는 프로젝트 구성이 잘못되었다고 생각합니다. 하나의 멀티 모듈 프로젝트에 하나의 settings.gradle 파일 만있을 수 있으며이 단일 파일에는 모든 모듈이 포함되어야합니다.

RootProject/ 
    build.gradle 
    settings.gradle 
    Proj1/ 
    build.gradle 
    Proj2/ 
    build.gradle 
    Proj3/ 
    build.gradle 

그리고 settings.gradle해야이이어야 포함되어 다음과 같습니다 :

이 경우
include 'Proj1', 'Proj2', 'Proj3' 

것은, 보인다, 당신은 몇 가지 추가가 필요하지 않습니다

는 그래서 구조는 다음과 같은 수 있습니다 모듈 이름 또는 디렉토리를 변경하는 설정. 당신은 official user guide에서 그것에 대해 읽을 수 있습니다.

+0

감사합니다.하지만 proj2와 3은 일종의 유틸리티/라이브러리이며 다른 프로젝트에서 사용되기 때문에이 프로젝트가 단일 프로젝트 아래에있는 것을 원하지 않습니다. proj3이 루트 프로젝트 외부에서 필요하면 어떻게할까요? – Mark

+0

그런 다음 아티팩트를 일부 로컬 저장소에 게시하고 다른 종속성과 동일하게 사용해야합니다. – Stanislav

+0

이렇게하면됩니다. 이 작업을 수행하는 방법은 사용 설명서에 설명되어 있습니까? 아니면 설명 할 수 있습니까? – Mark

0

아무 것도 게시하거나 디렉토리 구조를 변경하지 않고도이를 수행하는 방법을 찾았습니다.

프로젝트 3에는 settings.gradle 또는 종속성이 필요하지 않습니다. build.gradle.

프로젝트 2 요구 settings.gradle :

include ':Proj3' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 

build,gradle :

dependencies { 
    compile project(':Proj3') 
} 

프로젝트 1 개 요구 settings.gradle :

include ':Proj3', ':Proj2' 
project(':Proj3').projectDir = new File(settingsDir, '../Proj3') 
project(':Proj2').projectDir = new File(settingsDir, '../Proj2') 

build,gradle :

dependencies { 
    compile project(':Proj2') 
} 

그리고 그게 핵심입니다! 프로젝트 1은 프로젝트 2에만 의존하면서 프로젝트 3을 포함하고 설정해야합니다. 그럼 모두 잘 작동합니다.

관련 문제