2015-03-24 11 views
44

Stworzyłem projekt mechanizmu Google App Engine, wykorzystując projekt maven archetype z dostawcą JPO Datanucleus, zasadniczo zgodnie z dokumentacją silnika aplikacji Google.Gdzie sprawdzanie jednostek w wyszukiwarce Google wymaga pliku persistence.xml?

Wszystko działa poprawnie podczas uruchamiania testu "celowania" maven.

Teraz musiałem zintegrować projekt ze studiem Android i chciałem migrować skrypt kompilacji do gradle. Skopiowałem wszystkie zależności z pom.xml do build.gradle, a projekt jest w porządku. Jednak wszystkie testy uzyskujące dostęp do magazynu danych Google kończą się niepowodzeniem.

Podczas wyjścia testowego pojawia się następujący komunikat:

Ostrzeżenie: Nie META-INF/pliki persistence.xml znaleziono w CLASSPATH bieżącego wątku!

Sprawdziłem folder build który jest tworzony podczas kompilacji, a nie folder zawiera persistence.xml z src/main/webapp/WEB-INF/classes/META-INF

Korzystanie Maven, jednak jest prawidłowo umieścić w folderze target/myapp-1.0-SNAPSHOT/WEB-INF/classes/META-INF.

Próbowałem skopiować persistence.xml przy użyciu zadania gradle copy w różnych lokalizacjach, takich jak build/classes/META-INFbuild/classes/webapp/WEB-INF/classes/META-INF i tak dalej, ale nic nie działało.

+0

Podczas gdy ja na pewno nie wiem wystarczająco dużo o gradle, itp., Aby ostatecznie odpowiedzieć na to, wszechmocny Goog dał mi [to SO pytanie] (http://stackoverflow.com/questions/1279060/jpa-with-toplink- no-meta-inf-persistence-xml-was-found-in-classpath), co może pomóc. – Becuzz

+0

Dziękuję za wskazanie tego. Jednak mój projekt buduje grzywnę WAR. Plik persistence.xml został poprawnie umieszczony w folderze WEB-INF/classes/META-INF. To nie jest problem. Problem polega na tym, że podczas uruchamiania testów jednostkowych (gdzie nie buduje się WAR), plik persistence.xml należy umieścić * gdzieś *. Pytam o to gdzieś. – itchee

+5

moje podejście byłoby umieścić 1 w każdym folderze, dopóki nie skończy :) Wydaje się, że chromy, ale okazał się skuteczny – deW1

Odpowiedz

15

Tylko dlatego, że plik znajduje się w katalogu, nie oznacza automatycznie, że jest w ścieżce CLASSPATH.

Umieść folder META-INF zawierający persistence.xml w /src/main/resources.

+4

To jest właściwie poprawne. Dziękuję tysiąc razy. Ale czy możesz rozwinąć nieco dalej, dlaczego kompilacja Gradle oczekuje pliku pod 'resources', gdy pliki sieciowe powinny przejść pod' webapp'? – itchee

+0

Prawdopodobnie, gdyby nie * (najprawdopodobniej) * skopiował odpowiedź, nie wiedząc, co to znaczy z komentarza dotyczącego [tej odpowiedzi] (http://stackoverflow.com/a/15403627/4686625), od pytanie Travis J połączone. – miradulo

+0

Sprawdź tę odpowiedź, aby uzyskać więcej informacji o tym, jak zmienić organizację mvn http://stackoverflow.com/questions/1297473/maven-include-a-meta-inf-folder-in-the-classes-fasseser – skullkid

Powiązane problemy