2013-06-19 10 views
7

Próbuję FTP podpisanego pliku APK po kompilacji Gradle. Dodałem już nową konfigurację kompilacji, która podpiszę plik APK, ale utknąłem próbując dowiedzieć się, jak wywołać zadanie FTP.Jak przesłać FTP plik z wersji Android Gradle?

Znalazłem oficjalny wygląd próbki na section 59.6, jednak narzeka, że ​​nie może rozwiązać zależności org.apache.ant: ant-commons-net: 1.8.4. Najwyraźniej brakuje tu czegoś oczywistego, na przykład, gdzie umieścić dany plik słoika lub odwołać się do niego, chociaż myślałem, że maven poradzi sobie z takimi rzeczami?

Dla porównania, tutaj jest próbka, która nie wiąże się z komunikatem o zależność:

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") 
     } 
    } 
} 

ta kończy się niepowodzeniem z komunikatem:

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

Oto mój pełny plik gradle.build, po usunięciu niektórych poufnych informacji:

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)") 
      } 
     } 
    } 
} 

Odpowiedz

1

Nie zadeklarowano repozytorium należy użyć do rozstrzygnięcia zadeklarowanych artefaktów. Spróbuj dodać następujący fragment kodu do pliku build.gradle:

repositories{ 
    mavenCentral() 
} 

okrzyki,

René

+0

Dzięki, ale, mam to w moim pliku kompilacji. Zaktualizowałem moje pytanie. –

+0

Nie, właśnie zadeklarowałeś repozytorium dla swoich wtyczek gradle (blok repozytorium w sekcji buildscript), potrzebujesz innego na toplevel, jak to zrobiłem w moim fragmencie. Są plany, aby ułatwić stosowanie wtyczek w przyszłości i ułatwić to. –

+0

Masz rację ... to naprawiło. dzięki –

0

Można również użyć natywnej ant zadanie get który obsługuje FTP, pracuje bez żadnych zewnętrznych zależności:

ant { 
    get(src: "ftp://<hostname>/remote/path/to/file.jar", dest: "/local/path/to/file", username: 'anonymous', password: 'anonymous') 
    } 
Powiązane problemy