Tôi đã có cấu hình gradle khá tốt, xây dựng mọi thứ tốt. Nhưng một trong những dự án xây dựng đa dự án của tôi có nguồn gốc từ phần còn lại của họ rất nhiều, rằng tôi sẽ sẵn sàng chuyển nó sang một repo git khác và cấu hình submodules để xử lý nó.Gradle multiproject cho "Không thể tìm thấy thuộc tính 'sourceSets' trên dự án" lỗi
Trước tiên, tôi đã di chuyển Dự án và tài nguyên của nó tới thư mục con Libraries/MovedProject
. Sau khi thay đổi một số dòng trong cấu hình gradle nó làm việc tốt. Nhưng sau đó tôi quyết định viết build.gradle mới chỉ cho dự án này và di chuyển tất cả các cấu hình ở đó từ chính.
Và đây là nơi mọi thứ ngừng hoạt động. Khi tôi cố gắng gọi bất kỳ tác vụ nào, nó luôn kết thúc với Could not find property 'sourceSets' on project ':Libraries/MovedProject'
. Dòng chịu trách nhiệm về điều này là:
dependencies {
...
if (noEclipseTask) {
testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
}
}
mà tôi sử dụng để chạy các thử nghiệm mà tôi sử dụng các lớp từ các dự án khác. Nếu tôi loại bỏ dòng đó, việc xây dựng không thành công chỉ khi nó đạt đến nhiệm vụ compileTestJava của các dự án sử dụng MovedProject. Nếu tôi loại bỏ dòng đó và gọi gradle :Libraries/MovedLibrary:properties
tôi có thể thấy:
...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: [email protected]
...
khi gradle :Libraries/MovedLibrary:build
xây dựng một cách chính xác.
Hiện nay tôi đã có tất cả mọi thứ thiết lập như sau:
thư mục:
- /SomeMainProject1
- /SomeMainProject2
- /SomeMainProject3
- /Libraries
- /MovedProject
- build.gradle
- dependencies.gradle
- project.gradle
- tasks.gradle
- /MovedProject
- /Builder
- dependencies.gradle
- dự án .gradle
- tasks.gradle
- build.gradle
- settings.gradle
cài đặt.gradle
include Libraries/MovedProject, SomeMainProject1, SomeMainProject2, SomeMainProject3
sourceSets cho MovedProject được định nghĩa trong
Libraries/MovedProject/project.gradle
:sourceSets { main { java { srcDir 'src' srcDir 'resources' } resources { srcDir 'resources' } } test { java { srcDir 'test/unit' } } }
phụ thuộc mà làm cho sử dụng sourceSets.test.output được lưu trữ trong
Builder/dependancies.gradle
, và thiết lập cho từng dự án mà cần MovedProject để chạy kiểm tra:project(':SomeMainProject1') { dependencies { ... if (noEclipseTask) { testCompile project(':Libraries/net.jsdpu').sourceSets.test.output } } }
Điều gì sẽ là cách dễ nhất để loại bỏ lỗi đó và làm cho các dự án xây dựng gradle với cấu trúc thư mục hiện tại? Tôi muốn hiểu tại sao gradle không thể thấy tài sản đó.
Xin cảm ơn! Bây giờ mọi thứ đều được xây dựng. Đã sử dụng thuộc tính 'project.evaluationDependsOn()' đã sử dụng. Tôi đoán rằng giải pháp là bẩn, nhưng tôi phải dính vào nó một lúc. –