Próbowałem więc dodać moją lokalną zależność pliku .jar do mojego pliku build.gradle:
apply plugin: 'java'
sourceSets {
main {
java {
srcDir 'src/model'
}
}
}
dependencies {
runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
}
I widać, że dodałem pliki .jar do folderu referencedLibraries tutaj: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries
Problem polega jednak na tym, że po uruchomieniu polecenia: gradle build w wierszu polecenia pojawia się następujący błąd:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Oto moje całe repozytorium: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
java
gradle
dependency-management
build.gradle
gradle-eclipse
Wang-Zhao-Liu QM
źródło
źródło
Odpowiedzi:
Jeśli naprawdę musisz pobrać plik .jar z katalogu lokalnego,
Dodaj obok oceny modułu (nie pliku oceny aplikacji):
Jednak będąc standardowym plikiem .jar w prawdziwym repozytorium maven, dlaczego tego nie spróbujesz?
źródło
gradle.build
plik - co to jest „plik oceny aplikacji” i „ocena modułu”?implementation(":gson:2.2.4")
wydaje się być na to sposobem.Zgodnie z dokumentacją użyj ścieżki względnej dla lokalnej zależności jar w następujący sposób:
źródło
Możesz to również zrobić, co obejmowałoby wszystkie pliki JAR w lokalnym repozytorium. W ten sposób nie będziesz musiał tego określać za każdym razem.
źródło
Poniższe działa dla mnie:
Zobacz dokumentację Gradle .
źródło
Możesz spróbować ponownie użyć lokalnego repozytorium Maven dla Gradle:
Zainstaluj słoik w lokalnym repozytorium Maven:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Sprawdź, czy słoik jest zainstalowany w
~/.m2/
lokalnym repozytorium MavenWłącz lokalne repozytorium Maven w swoim
build.gradle
pliku:źródło
Przyjęta odpowiedź jest dobra, jednak potrzebowałbym różnych konfiguracji bibliotek w mojej wieloprojektowej wersji Gradle, aby korzystać z tej samej biblioteki Java innej firmy.
Dodanie „ $ rootProject.projectDir ” do elementu ścieżki „ dir ” w moim zamknięciu „ allprojects ” oznaczało, że każdy podprojekt odwoływał się do tego samego katalogu „ libs ”, a nie wersji lokalnej dla tego podprojektu:
EDIT by Quizzie: zmieniono „$ {rootProject.projectDir}” na „$ rootProject.projectDir” (działa w najnowszej wersji Gradle).
źródło
Prostym sposobem na to jest
skompiluje wszystkie pliki .jar w katalogu libs w aplikacji.
źródło
Rozwiązanie dla osób korzystających z Kotlin DSL
Rozwiązania dodane do tej pory są świetne dla OP, ale nie można ich używać z DSL Kotlin bez uprzedniej ich tłumaczenia. Oto przykład, w jaki sposób dodałem lokalny plik .JAR do mojej kompilacji za pomocą DSL Kotlin:
Pamiętaj, że jeśli używasz systemu Windows, odwrotne ukośniki będą musiały być poprzedzone znakami ucieczki:
Pamiętaj też, że cudzysłowy muszą być podwójnymi, a nie pojedynczymi.
Edytuj na 2020 r .:
Aktualizacje stopni były przestarzałe
compile
itestCompile
na rzeczimplementation
oraztestImplementation
. Tak więc powyższy blok zależności wyglądałby tak dla bieżących wersji Gradle:źródło
compile(project(":MyProject"))
gdzie „MyProject” jest zdefiniowany w twoimsettings.gradle
pliku z czymś podobnyminclude("MyProject")
.Nie mogłem uzyskać powyższej sugestii na https://stackoverflow.com/a/20956456/1019307 do pracy. To zadziałało dla mnie. W przypadku pliku
secondstring-20030401.jar
zapisanego wlibs/
katalogu w katalogu głównym projektu:źródło
Odpowiedź na to pytanie została już szczegółowo wyjaśniona. Nadal chcę dodać coś, co wydaje mi się bardzo zaskakujące:
Zadanie „gradle dependencies” nie wyświetla żadnych zależności plików. Nawet jeśli możesz tak myśleć, ponieważ zostały one określone w bloku „zależności”.
Więc nie polegaj na wynikach tego, aby sprawdzić, czy Twoje lokalne pliki lib działają poprawnie.
źródło
Rozwiązaniem, które działało dla mnie, jest użycie fileTree w pliku build.gradle. Zachowaj plik .jar, który należy dodać jako zależność w folderze libs. Podaj poniższy kod w bloku zależności w build.gradle:
źródło
Najlepszym sposobem na to jest dodanie tego do pliku build.gradle i wybranie opcji synchronizacji
źródło
Możesz dodać słoik robiąc:
Dla grad po prostu wstaw następujący kod
build.gradle
:a dla maven wykonaj następujące kroki:
W przypadku Intellij: Plik-> struktura projektu-> moduły-> karta zależności-> kliknij + znak-> jar i zależność-> wybierz słoiki, które chcesz zaimportować-> ok-> zastosuj (jeśli jest widoczny) -> ok
Pamiętaj, że jeśli masz jakiś
java.lang.NoClassDefFoundError: Could not initialize class
wyjątek w czasie wykonywania, oznacza to, że zależności w słoiku niezainstalowane, musisz dodać wszystkie zależności w projekcie nadrzędnym.źródło
Idź do pliku -> Struktura projektu -> Moduły -> aplikacja -> karta Zależności -> Kliknij + (przycisk) -> Wybierz zależność pliku -> Wybierz plik jar w folderze lib
Te kroki automatycznie dodadzą twoją zależność do gralde
Bardzo prosta
źródło
build.gradle
.Zachowaj ostrożność, jeśli używasz ciągłej integracji, musisz dodać biblioteki w tej samej ścieżce na serwerze kompilacji.
Z tego powodu wolę dodać jar do lokalnego repozytorium i oczywiście zrobić to samo na serwerze kompilacji.
źródło
Inny sposób:
Dodaj bibliotekę w widoku drzewa. Kliknij ten przycisk prawym przyciskiem myszy. Wybierz menu „Dodaj jako bibliotekę”. Pojawi się okno dialogowe pozwalające wybrać moduł. OK i gotowe.
źródło