2013-09-22 13 views
8

Ho un progetto in cui voglio lavorare con un insieme di classi generate da JAXB da un XSD. Con queste classi mi piacerebbe marshall/unmarshall da XML e JSON.jaxb.properties mancanti in fase di esecuzione quando sono stati creati con Maven

Ho capito che avrei bisogno di Moxy Eclipselink per fare quello che mi serve. Ho testato le mie lezioni e lavorato come un progetto Ant, quindi ho deciso di trasferirlo a Maven per una migliore gestione.

Tuttavia, il file jaxb.properties non sembra essere riconosciuto in fase di esecuzione.

Il mio progetto ha un artefatto Maven per gli oggetti e un altro artefatto per la logica/l'elaborazione. Mi sono tirato fuori i capelli cercando di capire dove mettere i jaxb.properties in modo che potessero essere letti.

ho cercato

oggetti Progetto

/src/main/resources/jaxb.properties 
/src/main/java/[namespace]/jaxb.properties 

Logic Progetto

/src/main/resources/jaxb.properties 
/src/main/java/[namespace]/jaxb.properties 

Tuttavia, quando cerco di ottenere il nome di classe di mia JAXBContext ho ancora:

class com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl 

Se io modificare le mie impostazioni gestito specificando un'opzione JVM di:

-Djavax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 

ottengo:

class org.eclipse.persistence.jaxb.JAXBContext 

In entrambi i progetti che ho specificato questo nel pom.xml

<build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <includes> 
        <include>**/*.properties</include> 
       </includes> 
      </resource> 
     </resources> 
</build> 

Se guardo al JAR, vedo jaxb.properties lì dentro.

Root of JAR Ora sono confuso.

risposta

11

È necessario assicurarsi che il file jaxb.properties si trovi nella directory delle risorse nella stessa struttura del pacchetto delle corrispondenti classi di modello.

Esempio

+1

Blaise, grazie per il link GitHub. Dopo aver esaminato attentamente la struttura della cartella, ha davvero iniziato a dare un senso. Ho inserito jaxb.properties nel pacchetto corretto e ha funzionato benissimo! –

+1

Questo mi è stato utile, ho eseguito un refactoring e spostato le classi di modelli nella mia applicazione, ma ho dimenticato di spostare jaxb.properties. La struttura del pacchetto deve corrispondere esattamente sotto l'albero delle risorse. Il mio era fuori da un pacchetto e tutto si ruppe. Questo è un punto molto importante. – Jon

+0

Grazie mille a tutti. Questo era anche il mio problema. Questo è il motivo per cui adoro lo stackoverflow. Quindi, molte persone fantastiche come te per aiutare! – atom88

0

esempio, nel Maven la classe Java

src\main\java\com\example\sitemap\generate\domain 

e il file jaxb.properties

src\main\resources\com\example\sitemap\generate\domain\jaxb.properties 
Problemi correlati