2016-04-29 6 views
1

So habe ich erfolgreich die uploadArchives Aufgabe verwendet, um aar-Bibliotheken auf Nexus zu laden. Ich möchte das gleiche jetzt mit apks tun, aber nicht wirklich schaffen, es im Moment richtig zu machen. Ich mache ziemlich dasselbe, aber mit unterschiedlicher Verpackung. Das macht den Trick aber nicht.Wie kann ich alle Flavors auf nexus mit Gradle hochladen?

Ich wundere mich jetzt, wenn die Verwendung der uploadArchives Aufgabe ist wirklich die Art, dies zu tun, oder wenn ich eine andere Aufgabe verwenden sollte. Hier ist der Code, den ich jetzt benutze und dass wir mir aar Bibliotheken laden:

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

Antwort

0

Ein wenig spät, aber ich es geschafft, diese Arbeit mit der alten Ebene Httpclient zu bekommen.

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') 
       ) 
      } 
     } 
    } 
} 
Verwandte Themen