2013-06-19 34 views
7

Tôi đang cố gắng FTP APK đã ký sau khi xây dựng Gradle. Tôi đã thêm cấu hình xây dựng mới sẽ ký APK, nhưng tôi đang cố gắng tìm ra cách gọi một tác vụ FTP.Làm thế nào để FTP một tập tin từ một Android Gradle xây dựng?

Tôi tìm thấy mẫu tìm kiếm chính thức tại section 59.6, tuy nhiên, nó phàn nàn rằng nó không thể giải quyết sự phụ thuộc org.apache.ant: ant-commons-net: 1.8.4. Vì vậy, dường như tôi đang thiếu một cái gì đó hiển nhiên ở đây, giống như nơi để đặt một tập tin jar hoặc tham khảo nó, mặc dù tôi nghĩ rằng maven sẽ xử lý loại điều này?

Để tham khảo, đây là mẫu liên kết mà không thành công với một thông điệp về sự phụ thuộc:

configurations { 
    ftpAntTask 
} 

dependencies { 
    ftpAntTask("org.apache.ant:ant-commons-net:1.8.4") { 
     module("commons-net:commons-net:1.4.1") { 
      dependencies "oro:oro:2.0.8:jar" 
     } 
    } 
} 

task ftp << { 
    ant { 
     taskdef(name: 'ftp', 
       classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', 
       classpath: configurations.ftpAntTask.asPath) 
     ftp(server: "ftp.apache.org", userid: "anonymous", password: "[email protected]") { 
      fileset(dir: "htdocs/manual") 
     } 
    } 
} 

này không thành công với thông điệp:

> Could not find org.apache.ant:ant-commons-net:1.8.4. 

Dưới đây là hoàn toàn tập tin gradle.build của tôi, với một số thông tin nhạy cảm bị xóa:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 17 
    } 

    signingConfigs { 
     signed { 
      storeFile file("(removed)") 
      storePassword "(removed)" 
      keyAlias "(removed)" 
      keyPassword "(removed)" 
     } 
    } 

    buildTypes { 
     signed { 
      debuggable false 
      jniDebugBuild false 
      signingConfig signingConfigs.signed 
     } 
    } 
} 

configurations { 
    ftpAntTask 
} 

dependencies { 
    ftpAntTask("org.apache.ant:ant-commons-net:1.8.4") { 
     module("commons-net:commons-net:1.4.1") { 
      dependencies "oro:oro:2.0.8:jar" 
     } 
    } 
} 

task ftp << { 
    ant { 
     taskdef(name: 'ftp', 
       classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', 
       classpath: configurations.ftpAntTask.asPath) 
     ftp(server: "(removed)", userid: "(removed)", password: "(removed)", remoteDir: "(removed)") { 
      fileset(dir: "(removed)") { 
       include(name: "(removed)") 
      } 
     } 
    } 
} 

Trả lời

1

Bạn không khai báo kho lưu trữ c một được sử dụng để giải quyết các hiện vật đã khai báo. Hãy thử thêm đoạn mã sau vào tập tin build.gradle của bạn:

repositories{ 
    mavenCentral() 
} 

cổ vũ,

René

+0

Cảm ơn, nhưng, tôi có điều đó trong tệp xây dựng của mình. Tôi đã cập nhật câu hỏi của mình. –

+0

Không, bạn chỉ cần khai báo một kho lưu trữ cho các plugin gradle của bạn (khối kho lưu trữ trong phần buildscript), bạn cần một cái khác trên toplevel như tôi đã thực hiện nó trong đoạn mã của tôi. Có những kế hoạch để làm cho dễ dàng hơn để áp dụng các plugin trong tương lai và làm cho điều này dễ dàng hơn. –

+0

Bạn đúng ... đã sửa nó. cảm ơn –

0

Bạn cũng có thể sử dụng có nguồn gốc kiến ​​nhiệm vụ get mà hỗ trợ FTP, làm việc với không có phụ thuộc bên ngoài:

ant { 
    get(src: "ftp://<hostname>/remote/path/to/file.jar", dest: "/local/path/to/file", username: 'anonymous', password: 'anonymous') 
    } 
Các vấn đề liên quan