2014-12-11 24 views
8

Tôi đã có thư viện dự án trong Eclipse với Maven và jar được tạo bao gồm một số phụ thuộc thư viện bên trong. Bây giờ tôi đang di chuyển sang Android Studio và tôi muốn xây dựng cùng một cái lọ. Tôi có thể tạo ra một cái bình với những dòng sau trong gradle:Jar xuất Android Studio với các phụ thuộc

task clearJar(type: Delete) { 
    delete 'build/libs/mysdk.jar' 
} 

task makeJar(type: Copy) { 
    from('build/intermediates/bundles/release/') 
    into('release/') 
    include('classes.jar') 
    rename ('classes.jar', 'mysdk.jar') 
} 

makeJar.dependsOn(clearJar, build) 

Nhưng bên trong lọ có được không bao gồm các thư viện mà tôi sử dụng trong thư viện dự án của tôi. Với Maven tôi có thể sử dụng phạm vi "được cung cấp" để bao gồm hoặc không phải là một thư viện trong lọ của tôi nhưng với gradle ... làm thế nào tôi có thể làm điều đó?

Cảm ơn

Trả lời

11

giải quyết với các nhiệm vụ sau:

task jarTask(type: Jar) { 
baseName="my-sdk-android" 
from 'src/main/java' 
} 

task createJarWithDependencies(type: Jar) { 
    baseName = "my-sdk-android-jar-with-dependencies" 

    from { 
    configurations.compile.collect { 
     it.isDirectory() ? it : zipTree(it) 
    } 

    } 

    with jarTask 
} 

configurations { 
    jarConfiguration 
} 

artifacts { 
    jarConfiguration jarTask 
} 
+2

Bạn đá mate. Đã cứu sống ngày. Chỉ cần làm rõ, bạn cần chạy "gradlew createJarWithDependencies" và đầu ra sẽ nằm trong/build/output/libs –

+0

Bạn có thể vui lòng giúp tôi cho câu trả lời ở trên tôi không nhận được đầu ra mong muốn –

+4

Điều này không hiệu quả với tôi. Tệp nguồn được bao gồm dưới dạng và không ở dạng được biên dịch như trường hợp có 'Xuất ..' trong nhật thực. –

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