2016-04-29 15 views
1

これで、uploadArchivesタスクを使用してaarライブラリをNexusにアップロードできました。 私はapkで今でも同じことをしたいと思っていますが、現時点では正しいことを本当に管理していません。 私はかなり同じことをしていますが、パッケージは違っています。しかしそれはトリックをしません。どのようにしてgradleを使ってすべてのフレーバapxをnexusにアップロードできますか?

uploadArchivesタスクを実際に使用しているのか、別のタスクを使用する必要があるのか​​、今私は疑問に思っています。 は、ここで私が今使っているコードだとそれは私がAARのライブラリをアップロードしてみましょう:

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: getPropertyValue('mUrl')+"/content/repositories/releases/") { 
       authentication(userName: getPropertyValue('mUserName'), password: getPropertyValue('mPassword')) 
      } 

      def version = getPropertyValue('version') 
      _productFlavors.each { name, config -> 
       def releaseName = name+"Release" 
       addFilter(releaseName) { artifact, file -> 
        artifact.attributes.classifier.equals(releaseName) 
       } 
       pom(releaseName).artifactId = "artifact" 
       pom(releaseName).version = version 
       pom(releaseName).groupId = "com.example."+name 
       pom(releaseName).packaging = "apk" 
      } 
     } 
    } 
} 

答えて

0

少し遅れて、私は、これは古いプレーンにHTTPClientを使用して作業を得ることができました。

def uploadToRepository(File file, String folder, String url, String userName, String password){ 
if(url != null && !url.isEmpty()){ 
    def client = new DefaultHttpClient() 
    def post = new HttpPost("${url}/content/repositories/releases/${folder}/myapk.apk"); 
    def entity = new MultipartEntity() 
    def fileBody = new FileBody(file, "application/vnd.android.package-archive", file.name) 
    entity.addPart("file", fileBody) 
    post.entity = entity 

    def basicAuthString = "Basic " + "${userName}:${password}".bytes.encodeBase64().toString() 
    post.addHeader('Authorization', basicAuthString); 

    post.setEntity(entity); 
    def response = client.execute(post); 
    if(response.getStatusLine().getStatusCode() == 201) 
     println "${file.name} uploaded" 
} 
} 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      def version = getPropertyValue('version') 
      def buildVersion = '' 

      _productFlavors.each { name, config -> 
       def releaseName = name+"Release" 
       addFilter(releaseName) { artifact, file -> 
        artifact.attributes.classifier.equals(releaseName) 
       } 
       def fileName = "${project.buildDir}\\outputs\\apk\\something.app-${name}-release.apk" 
       def file = new File(fileName) 
       uploadToRepository(
         file, 
         "com/something/${name.replaceAll('_','/')}/something/${version+buildVersion}/", 
         getPropertyValue('mUrl'), 
         getPropertyValue('mUserName'), 
         getPropertyValue('mPassword') 
       ) 
      } 
     } 
    } 
} 
関連する問題