Aby przesłać słoik poprzez Gradle trzeba zadeklarować, że słoik jak publikować artefakt i dodać go do konkretnej konfiguracji za pomocą zamknięcia artefakty:
apply plugin:'maven'
configurations{
allJars
}
artifacts{
allJars file("path/to/jarFile.jar")
}
teraz można konfigurować dynamicznie utworzony zadanie uploadAllJars:
uploadAllJars {
repositories {
mavenDeployer {
repository(url: 'http://localhost:8081/artifactory/acme') {
authentication(userName: 'admin', password: 'password');
}
}
}
Problem polega na tym, że chcesz przesłać wiele artefaktów. Aby to osiągnąć, potrzebujesz więcej dynamiki w swoim skrypcie kompilacji. Dynamiczne tworzenie publikowanych grafik dla wszystkich odkrytych słoików można zawijać w zadanie. W moim przykładzie zadanie discoverAllJars po prostu wyszukuje w określonym folderze pliki jar. Tutaj musisz zaimplementować własną logikę, aby wyszukać słoiki w twoim archiwum tgz.
Aby móc załadować wiele artefaktów w ramach zadania uploadAllJars, należy użyć filtru pom. Aby uzyskać szczegółowe informacje na temat filtru pom, spójrz na gradle userguide pod adresem http://www.gradle.org/docs/current/userguide/maven_plugin.html#uploading_to_maven_repositories
Ponieważ przenieśliśmy konfigurację opublikowanych artefaktów do fazy wykonania gradle, musimy również skonfigurować uploadAllJars w fazie wykonania. Dlatego też utworzę zadanie configureUploadAllJars. Zauważ, w jaki sposób odwoływać pliki jar wykryte za pomocą „discoverAllJars.discoveredFiles”:
task configureUploadAllJars{
dependsOn discoverAllJars
doLast{
uploadAllJars {
repositories {
mavenDeployer {
repository(url: 'http://yourrepository/') {
authentication(userName: 'admin', password: 'password');
}
discoverAllJars.discoveredFiles.each{discoveredFile ->
def filterName = discoveredFile.name - ".jar"
addFilter(filterName) { artifact, file ->
file.name == discoveredFile.name
}
pom(filterName).artifactId = filterName
}
}
}
}
}
}
Teraz wystarczy dodać zależność między uploadAllJars i configureUploadAllJars:
uploadAllJars.dependsOn configureUploadAllJars
tym przykładzie użyto tej samej grupy wersja dla wszystkich odkrytych plików jar i nazwa jar jako artifactId. możesz to zmienić, jak chcesz, używając mechanizmu pom.
nadzieję, że pomogło,
okrzyki, René
Dzięki René! Dokładnie tego potrzebuję! Jestem nowy w Gradle i nie wiedziałem, że możesz skonfigurować zadania podczas wykonywania.Próbowałem czegoś podobnego za pomocą nowej wtyczki "maven-publish", ale nie działało, ponieważ nie pozwala na modyfikowanie publikacji podczas wykonywania. –
Ok, teraz utknąłem z ładowaniem "surowych" POM (bez żadnych artefaktów z nimi związanych). –
Zadanie 'discoverAllJars' nie działa 4 me.it napotkasz błąd' Nie można znaleźć artefaktów metody() dla argumentów ' – Marks