Jak mogę dodać pliki konfiguracyjne lub inne zasoby do mojego jar za pomocą Gradle?
Struktura mojego projektu:
src / main / java / com / perseus / .. --- Pakiety Java (pliki źródłowe)
src / main / java / config / *. xml --- pliki konfiguracyjne Spring
Oczekiwana struktura słoika:
com / perseus / .. --- Pakiety Java (pliki klas)
config / *. xml --- pliki konfiguracyjne Spring
gradle
build.gradle
Pritesh Mhatre
źródło
źródło
Przenieś pliki konfiguracyjne z
src/main/java
dosrc/main/resources
.źródło
Dzięki chłopaki, migrowałem istniejący projekt do Gradle i nie podobał mi się pomysł zmiany struktury projektu.
Rozgryzłem to, pomyślałem, że ta informacja może być przydatna dla początkujących.
Oto przykładowe zadanie z mojego „build.gradle”:
version = '1.0.0' jar { baseName = 'analytics' from('src/main/java') { include 'config/**/*.xml' } manifest { attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version } }
źródło
sourceSets.main.resources { srcDirs = ["src/main/java"]; exclude "**/*.java" }
.Domyślnie wszystkie dodane pliki
src/main/resources
zostaną uwzględnione w słoiku.Jeśli z jakiegoś powodu musisz zmienić to zachowanie, możesz to zrobić, konfigurując
sourceSets
.Ta część dokumentacji zawiera wszystkie szczegóły
źródło
.../resources/
jest uwzględniana zamiast katalogu zasobów z zawartością?Napotkałem ten sam problem. Miałem plik PNG w pakiecie Java i nie został on wyeksportowany w ostatecznym pliku JAR wraz ze źródłami, co spowodowało awarię aplikacji podczas uruchamiania (nie znaleziono pliku).
Żadna z powyższych odpowiedzi nie rozwiązała mojego problemu, ale znalazłem rozwiązanie na forach Gradle. Dodałem do mojego
build.gradle
pliku:Mówi Gradle, aby szukał zasobów w
src
folderze i poprosił go o uwzględnienie tylko plików PNG.EDYCJA: Uważaj, jeśli używasz Eclipse, spowoduje to uszkodzenie konfiguracji uruchamiania i pojawi się
main class not found
błąd podczas próby uruchomienia programu. Aby to naprawić, jedynym rozwiązaniem, które znalazłem, jest na przykład przeniesienie obrazu (ów) do innego katalogures/
i ustawienie go jakosrcDirs
zamiastsrc/
.źródło
+=
operatora, aby dodać moje katalogi do istniejących: np.sourceSets.main.resources.srcDirs += [ "src/main/java" ]
Należy pamiętać, że ścieżka w src / main / resources musi odpowiadać ścieżce pakietu plików .class, które chcą uzyskać dostęp do zasobu. Zobacz moją odpowiedź tutaj .
źródło