Mam projekt, w którym chcę pracować z zestawem klas generowanych przez JAXB z XSD. Z tymi klasami chciałbym marshall/unmarshall z XML i JSON.jaxb.properties brakuje w czasie wykonywania po zbudowaniu z Maven
Odkryłem, że potrzebuję Moxy Eclipselink, aby zrobić to, czego potrzebuję. Testowałem swoje zajęcia i przetwarzałem je jako projekt Ant, następnie zdecydowałem przenieść go do Maven dla lepszego zarządzania.
Jednak plik jaxb.properties nie jest rozpoznawany w środowisku wykonawczym.
Mój projekt ma artefakt Maven dla obiektów i inny artefakt dla logiki/przetwarzania. Wyciągałem włosy, próbując dowiedzieć się, gdzie umieścić właściwość jaxb.properties, aby można było je odczytać.
Próbowałem
obiektów projektu
/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
Logic Projekt
/src/main/resources/jaxb.properties
/src/main/java/[namespace]/jaxb.properties
Jednak gdy próbuję uzyskać classname mojego JAXBContext wciąż otrzymuję:
class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl
Jeśli I zmodyfikować moje uruchomić ustawienia, określając opcję JVM z:
-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
uzyskać:
class org.eclipse.persistence.jaxb.JAXBContext
W obu projektów to mam określonych w pom.xml
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
Jeśli patrzę w JAR, widzę tam jaxb.properties.
Teraz jestem zdezorientowany.
Blaise, dzięki za ten link GitHub. Po przeanalizowaniu struktury folderu naprawdę zaczęło to mieć sens. Umieściłem jaxb.properties we właściwym pakiecie i działało świetnie! –
To było dla mnie pomocne, zrobiłem refaktoryzację i przeniosłem klasy modelu w mojej aplikacji, ale zapomniałem przenieść jaxb.properties. Struktura pakietu musi dokładnie pasować do drzewa zasobów. Mój był wyłączony przez jedną paczkę i wszystko się zepsuło. To bardzo ważna kwestia. – Jon
Dziękuję bardzo. To był też mój problem. Właśnie dlatego kocham stackoverflow. A więc wielu świetnych ludzi, takich jak Ty, pomaga! – atom88