2010-12-10 10 views
5

Zajmuję się tworzeniem aplikacji JSF 2.0 (Mojarra + Primefaces) i korzystaniem ze środowiska maven-build. Zanim użyłem pliku faces-config.xml do zarejestrowania moich niestandardowych konwerterów i weryfikatorów, wszystko poszło dobrze. Potem zobaczyłem syntaktyczny cukier JSF 2.0 - podejście oparte na adnotacjach. A teraz chciałbym go użyć, zamiast pliku konfiguracyjnego xml. Problem polegał na tym, że Mojarra nie skanował moich adnotowanych klas. Zorientowałem się, że muszę nadać atrybutowi false wartość atrybutu <faces-config ... metadata-complete="false">. Teraz działa, ale tylko wtedy, gdy uruchamiam aplikację z celem mvn tomcat:run-war, a nie z dynamicznym projektem mvn tomcat:run, który jest wygodniejszy dla programistów. Specyfikacja JSP 2.0 mówi, że:Maven tomcat: narzędzie do generowania celów i jsf oparte na adnotacjach/komponentach/konwerterach/walidatorach

Jeżeli element w WEB-INF/faces-config.xml plik zawiera atrybut metadanych uzupełniania którego wartość to „true”, realizacja nie musi wykonywać skanowanie Adnotacja na dowolnych klasach, z wyjątkiem klas dostarczonych przez samą implementację. W przeciwnym razie kontynuuj jako .

Jeśli środowisko wykonawcze wykryje konflikt między wpisem w Zasobie konfiguracji aplikacji i adnotacją, pierwszeństwo ma pozycja w Zasobie konfiguracji aplikacji. Wszystkie klasy w WEB-INF/classes muszą zostać przeskanowane.

Dla każdego słoika w katalogu WEB-INF/lib aplikacji, jeśli słoik zawiera plik "META-INF/faces-config.xml" lub plik pasujący do wyrażenia regularnego ". *. Faces-config .xml "(nawet pusty), wszystkie klasy w , w którym słoik musi zostać przeskanowany.

Ale nie mówi nic o dynamicznych projektach działających w środowisku budowy mavenów :)! Czy ktoś ma rozwiązanie tego problemu?

Cheers,

Kevin

Odpowiedz

1

miałem również ten problem, ale okazało się, że dodanie wojny: cel inplace stało się dla mnie pracować. to jest użycie zamiast tylko "tomcat: run" zamiast "tomcat: run" i powinno działać poprawnie.