2013-06-19 5 views
7

Gradle 빌드 후 서명 된 APK를 FTP로 보내려고합니다. 이미 APK에 서명 할 새 빌드 구성을 추가했지만 FTP 작업을 호출하는 방법을 파악하려고 노력 중입니다.Android Gradle 빌드에서 파일을 FTP하는 방법은 무엇입니까?

section 59.6에서 공식적인 샘플을 발견했지만 종속성 org.apache.ant : ant-commons-net : 1.8.4를 해결할 수 없다고 불평합니다. 그래서 분명히 여기에 명백한 내용이 없습니다. 예를 들어, maven이 이런 종류의 일을 처리 할 것이라고 생각했지만, 주어진 jar 파일을 넣거나 참조 할 위치와 같은 것입니까?

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

이 메시지와 함께 실패합니다 :

이 참고로, 여기에 의존성에 대한 메시지와 함께 실패 링크 된 샘플입니다 여기에

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

내 전체 gradle.build 파일이며, 일부 민감한 정보가 삭제되었습니다 :

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

답변

1

당신은 저장소를 선언했습니다 선언 된 아티팩트를 해결하는 데 사용됩니다. 어떤 외부 의존성과 함께 작동,

+0

감사합니다.하지만 빌드 파일에는 해당 파일이 있습니다. 내 질문을 업데이트했습니다. –

+0

아니요, 방금 작성한 grails 플러그인 (buildscript 섹션의 저장소 블록)에 대한 저장소를 선언 했으므로 코드 조각에서 한 것처럼 최상위 클래스가 필요합니다. 앞으로 플러그인을 쉽게 적용하고 더 쉽게 만들 계획입니다. –

+0

당신 말이 맞아요. 감사 –

0

또한 FTP를 지원하는 네이티브 개미 가져 오기 작업을 사용할 수

repositories{ 
    mavenCentral() 
} 

응원

르네을 : 당신의 build.gradle 파일에 다음 코드를 추가하십시오

ant { 
    get(src: "ftp://<hostname>/remote/path/to/file.jar", dest: "/local/path/to/file", username: 'anonymous', password: 'anonymous') 
    } 
관련 문제