2014-04-03 19 views
5

Tôi đang cố trích xuất tệp nén phụ thuộc không có thư mục PARENT, loại trừ một số tệp trong khi trích xuất bằng Gradle.Làm thế nào để trích xuất mà không có thư mục đầu tiên sử dụng Gradle?

Dưới đây là những gì tôi đã có và các công trình này nhưng không cảm thấy đúng và tôi hy vọng có một cách tốt hơn để làm tập tin

Zip này mà tôi đang giải nén

jar tf parent-folder-name.zip 


parent-folder-name/bin/something.sh 
parent-folder-name/bin/something.bat 
parent-folder-name/lib/somelib.jar 

Lựa chọn 1

task explodeToDist1(type: Copy) { 
    from zipTree(configurations.extractDist.singleFile) 
    exclude "**/lib/**" 
     eachFile { 
      def newPath = it.relativePath.segments[1..-1].join("/") 
      it.relativePath = RelativePath.parse(true, newPath) 
     } 
    into 'build/dist' 
    doLast { 
     def path = buildDir.getPath() + "/dist/parent-folder-name" 
     def dirToDelete = new File(path) 
     dirToDelete.deleteOnExit() 
    } 
} 

Lựa chọn 2

task explodeToDist2 << { 
     def unzipDir = new File('build/unzipTmp') 
     copy { 
      from zipTree(configurations.extractDist.singleFile) 
      into unzipDir 
     } 
     def rootZipDir = unzipDir.listFiles()[0] 
     fileTree(rootZipDir){ 
       exclude "**/lib/**" 
     }.copy { 
      into 'src/dist' 
     } 
     unzipDir.deleteDir() 
} 

Đối với tôi phương án 2 cảm thấy tốt hơn nhưng tôi không chắc chắn nếu có một cách tốt hơn để làm điều này trong Gradle?

+1

Chỉ cần một cross-liên kết cùng một câu hỏi đã được nêu ra tại diễn đàn Gradle - http: // diễn đàn. gradle.org/gradle/topics/how_to_extract_without_first_directory_using_gradle – Radim

Trả lời

0

Dường như trường hợp sử dụng của bạn không được hỗ trợ theo cách rất thân thiện với người dùng. Có một yêu cầu tính năng liên quan được liệt kê here.

Cũng có similar stackoverflow question có một số đề xuất trông dễ dàng hơn các tùy chọn bạn đã có.

Vì gradle tích hợp tốt với kiến ​​và tác vụ giải nén kiến ​​không hỗ trợ làm phẳng bạn cũng có thể dựa vào đó.

Để biết thêm chi tiết xem:

Các vấn đề liên quan