Tôi có một nhiệm vụ tạo nguồn java và một bộ lọ từ các nguồn này (ví dụ: dự án a
). Tôi muốn xuất các lọ này sang các dự án phụ thuộc (ví dụ, dự án b
). Vì vậy, đây là khoảng những gì tôi có ngay bây giờ:Gradle - Tôi có thể bao gồm đầu ra của nhiệm vụ trong các phụ thuộc dự án
//a.gradle
configurations{
generatedJars
}
task generateJars(type: JavaExec) {
//generate jars ...
outputs.files += //append generated jars here
}
dependencies{
generatedJars generateJars.outputs.files
}
//b.gradle
dependencies{
project(path: ':a', configuration: 'generatedJars')
}
Nó hoạt động OK, ngoại trừ việc thêm generateJars.outputs.files
như một sự phụ thuộc không nói gradle rằng nó phải chạy generateJars
nhiệm vụ khi không có lọ nào được tạo. Tôi đã thử thêm nhiệm vụ như là một phụ thuộc với hy vọng rằng nó sẽ hoạt động giống như khi bạn thêm một tác vụ jar/zip vào một cấu hình tạo tác (ví dụ artifacts{ myJarTask }
), nhưng nó sẽ báo lỗi cho tôi biết rằng tôi không thể làm cái đó. Tất nhiên tôi có thể tiêm các nhiệm vụ generateJars
một nơi nào đó trong quá trình xây dựng trước khi :b
bắt đầu đánh giá, nhưng đó là vụng về và giòn, vì vậy tôi muốn tránh nó.
Tôi cảm thấy mình nên thêm các lọ được tạo vào artifacts{ ... }
của dự án, nhưng tôi không chắc chắn cách làm cho chúng có thể hiển thị với các dự án phụ thuộc. Có cách nào tốt hơn để đạt được điều này?
Dự án phụ thuộc (dự án b
) sẽ cần phải thiết lập đường dẫn lớp mô-đun IntelliJ IDEA để trỏ tới các lọ được tạo ra của dự án a
. Một cái gì đó chứ không phải như thế này (pseudo-code):
//b.gradle
idea{
module{
scopes.COMPILE.plus += project(path: ':a', configuration: 'generatedJars').files
}
}
Cho đến nay tôi đã cố gắng chỉ đơn giản là thêm một dependecy dự án trên :a
's generatedJars
trong :b
, nhưng Idea Plugin chỉ cần thêm mô-đun :a
như một mô-đun-phụ thuộc và giả định rằng nó xuất khẩu các lọ được tạo ra của nó (có lẽ là một giả định chính xác), do đó không thêm các lọ được tạo ra vào classpath của :b
.
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!
Cảm ơn. Thêm nhiệm vụ vào các 'artifacts' woks độc đáo trong module, nhưng tôi không thấy làm thế nào tôi có thể tham khảo những jars đó từ dự án' b' (không xuất bản chúng). Có, chỉ có thể tạo nguồn và xuất chúng dưới dạng nguồn mô-đun. Điều này sẽ làm việc, nhưng nó tạo ra thêm công việc cho IDEA, vì vậy tôi đã hy vọng nó có thể được phá vỡ bằng cách nào đó. Để làm cho hooking 'ideaModule -> generateJars' hoạt động tốt, tôi cũng cần thêm' b: ideaModule -> a: ideaModule', và tôi có khoảng 3 mô-đun mà tất cả đều cần làm điều này. Tôi đã hy vọng tôi có thể thiết lập nó cho độ phân giải tự động bằng cách nào đó. – rodion
quảng cáo 1. 'dự án (đường dẫn: 'a', cấu hình: 'generatedJars')' –
quảng cáo 2. Liệu vấn đề "thêm công việc"? (Bạn có thể sử dụng cùng một đối số cho mã không được sinh ra.) Trong mọi trường hợp, bạn có thể biên dịch các tệp bằng Gradle chứ không phải là một nhiệm vụ JavaExec. –