Tôi đang sử dụng Gradle để giúp tự động hóa các tác vụ Hadoop. Khi gọi Hadoop, tôi cần có khả năng chuyển nó tới đường dẫn đến một số lọ mà mã của tôi phụ thuộc vào để Hadoop có thể gửi sự phụ thuộc đó vào trong giai đoạn map/reduce.Cách sạch nhất trong Gradle để lấy đường dẫn đến tệp jar trong bộ nhớ phụ thuộc gradle
Tôi đã tìm ra điều gì đó hiệu quả, nhưng nó cảm thấy lộn xộn và tôi tự hỏi liệu có một tính năng mà tôi đang thiếu ở đâu đó không.
Đây là một phiên bản đơn giản của kịch bản gradle của tôi mà có một sự phụ thuộc vào các Solr 3.5.0 jar, và một nhiệm vụ findSolrJar
đó lặp qua tất cả các tập tin jar trong cấu hình để tìm một trong những quyền:
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.solr:solr-solrj:3.5.0'
}
task findSolrJar() {
println project.configurations.compile*.toURI().find { URI uri -> new File(uri).name == 'solr-solrj-3.5.0.jar'}
}
chạy này mang lại cho tôi ra như thế này:
gradle findSolrJar
file:/Users/tnaleid/.gradle/caches/artifacts-8/filestore/org.apache.solr/solr-solrj/3.5.0/jar/74cd28347239b64fcfc8c67c540d7a7179c926de/solr-solrj-3.5.0.jar
:findSolrJar UP-TO-DATE
BUILD SUCCESSFUL
Total time: 2.248 secs
có cách nào tốt hơn để làm điều này?
':' không hoạt động trên Windows bằng cách này. Sử dụng 'File.pathSeparator' có thể sửa lỗi đó. – Chilloutman
@Chilloutman Tôi đồng ý. Không mã cứng đường phân cách đường dẫn. –