2012-04-12 2 views
4

Momentan ist unser grddle-Setup darauf ausgerichtet, nach Abschluss eines Builds bestimmte Maven-Repositories zu veröffentlichen. Für einen bestimmten Kunden muss ich die Dateien jars, license files, pom.xml und ivy.xml zippen und alles in einer Zip-Datei senden. Um dies zu tun, muss ich nur einen alternativen Ort definieren, um es zu veröffentlichen. Die gesamte Dokumentation auf der Grapple-Site scheint darauf gerichtet zu sein, einen Satz von Veröffentlichungsregeln zu schreiben, keinen alternativen Satz.In Großbuchstaben, wie kann ich die Dateien ivy.xml und pom.xml generieren?

Ich hatte gehofft, einfach eine andere Aufgabe zu schreiben, die sich auf den Aufbau dieser kundenspezifischen Zip-Datei konzentrieren würde. Bis jetzt habe ich es alle Gläser (die Quelle und runable Code einschließt) zusammen mit der Lizenz- und Mitteilungsakte sammeln. Aber ich habe nicht die Nuss geknackt, als ich ein lokales Efeu-Repository und ein lokales Maven-Repository definiert habe, das nur ein Teil dieser alten Aufgabe ist.

task alt { 
    dependsOn subprojects*.tasks*.matching { task -> task.name == 'assemble' } 

    subprojects.each{project -> 
     if (project.hasProperty('sourceJar')) { 
      evaluationDependsOn(project.name) 
     } 
    } 

    File altDir = mkdir("$buildDir/alt") 
    subprojects.each { project -> 
     if (project.hasProperty('sourceJar')) { 
      // Extra the module name from the path of the sub-project 
      String submodule = project.projectDir.absolutePath.split(File.separator).last() 
      File subfolder = mkdir(altDir.absolutePath + "/${project.group}/${group}.${submodule}/$version") 
      project.tasks.withType(Jar).each {archiveTask -> 
       copy { 
        from archiveTask.archivePath 
        from("$rootDir") { 
         include 'license.txt' 
         include 'notice.txt' 
        } 
        into subfolder 
       } 
      } 
     } 
    } 
} 

Antwort

3

Hier ist die gradle docs, die Ihnen sagt, wie die pom zu erzeugen. Wenn Sie diese Datei in Ihrem lokalen Repository installieren möchten, können Sie auch den Mechanismus verwenden, der in dieser blog entry beschrieben wird. Im Grunde alles, was Sie haben

configure(install.repositories.mavenInstaller) { 
    pom.project { 
     version '1.0' 
     artifactId 'your.artifact.id' 
     groupId 'your.group.id' 
    } 
} 
zu tun

Es ist nicht, wie es zur Zeit möglich, sieht die ivy.xml durch gradle zu generieren, aber sobald Sie Ihre Pom-Datei haben könnten Sie Efeu selbst verwenden, um die Efeu-Datei zu erzeugen described here.

0

Abschnitt 64.5 von behandelt "Erstellen der Efeu-Modul-Deskriptor-Datei ohne Veröffentlichung".

Die Dokumentation ist etwas kaputt (zB inkonsistente Namenskonventionen). Die folgenden Werke für mich:

apply plugin: 'ivy-publish' 

publishing { 
    publications { 
     aoeu(IvyPublication) 
    } 
} 

Dies wird ein Ziel generateDescriptorFileForAoeuPublication erzeugen.

Verwandte Themen