2012-07-16 17 views
13

Buduję plik JAR bez użycia zadania Gradle Jar (do wykonania tego zadania muszę użyć zadania Ant). Jak skonfigurować uploadArchives, aby móc zainstalować plik JAR w określonym repozytorium.Gradle: Jak załadować niestandardowy plik JAR do repozytorium Maven

Próbowałem zastąpić domyślny artefakt z

uploadArchives { 
    repositories { 
     mavenDeployer { 
      // some Maven configuration 
     } 
    } 
} 

artifacts { 
    archives file: file('bin/result.jar') 
} 

ale dostaję błąd, że nie może być 2 artefakty z tego samego rodzaju i klasyfikatora, co oznacza tę konfigurację dodaje raczej, że nadpisuje konfigurację.

Odpowiedz

20

Masz rację, artifacts zamknięcie może dodawać artefakty tylko do podanej konfiguracji (patrz ArtifactHandler API).

Masz dwie opcje:

1) dodać filtr artefakt jak opisano here (patrz pkt 45.6.4.1 "Wiele artefaktów na projekt")... Jeśli używasz tego, spróbuj deklarując swoją konfigurację archives jak:

artifacts { 
    archives file: file('bin/result.jar'), name: 'result', type: 'jar' 
} 

ten sposób można coś takiego w filtrze artefaktu:

addFilter('result') {artifact, file -> 
    artifact.name == 'result' 
} 

2) Prześlij go jako osobny moduł maven. Jeśli result.jar jest jedynym słojem, który ładujesz, może to być dobre rozwiązanie.

configurations { 
    resultArchives 
} 

uploadResultArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: "same/url/here") 
    } 
    } 
} 

artifacts{ 
    resultArchives file: file('bin/result.jar') 
} 

Mam nadzieję, że to pomoże.

+0

Dzięki za rozwiązanie. Ten ostatni działał w moim przypadku jako urok. –

+0

Wystąpił błąd Nie znaleziono aplikacji DSLmethod "uploadResultArchive", zastosowałem wtyczkę maven. Każda inna wtyczka wymagała – sver

+1

@sver Chyba miał na myśli _uploadArchives_ – zaxme

Powiązane problemy