2011-11-24 8 views
10

Puse un archivo jaxb.properties en el paquete donde están mis clases donde utilizo un proveedor JAXB diferente (como se ve en este enlace Specifying EclipseLink MOXy as Your JAXB Provider) que uso para descalificación.archivo jaxb.properties del paquete java no incluido en Maven construido .war

Ocurre lo siguiente:

  • Cuando ejecuto el proyecto de Eclipse/STS la unmarshalling funciona bien, ya que lee el archivo jaxb.properties.

  • Cuando construyo el proyecto con Maven 3 (mvn clean install), el archivo jaxb.properties no está incluido en el paquete - por lo tanto, esas clases no puede archivos XML Resolver referencia con éxito. Luego tengo que colocar manualmente el archivo jaxb.properties navegando a la aplicación implementada, ingresando el paquete y pegando el archivo.

Soluciones? ¡Gracias!

Respuesta

10

Debe poner recursos (como jaxb.properties) en src/main/resources.
Todavía no puedo encontrar ninguna prueba/documentación, pero estoy seguro de que maven solo compilará y copiará los archivos .java de la carpeta src.

De la documentación parece claro, esa compilación solo compilará y no copiará nada. Por lo tanto, solo java archivos bajo src/main/java serán manejados y todo lo demás será ignorado.

Los recursos se manejan mediante resources:resources, que se ejecuta automáticamente. Este objetivo copia recursos del src/main/resources.

Compile solo compila los archivos de la carpeta src. Los archivos de recursos no son archivos java y, por lo tanto, no se copiarán ni compilarán en el directorio de salida.

+0

Will probar si va a trabajar de esta manera y proporcionar retroalimentación .. –

+0

¿Ha funcionado? ¿Cómo resolvió este problema? – HDave

+0

@HDave Creo que puso las propiedades en src/main/resources – oers

12

Como se indicó, la mejor opción es utilizar maven-resources-plugin para lograrlo.

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes/path/to/model/</outputDirectory> 
         <resources> 
          <resource> 
           <directory>${basedir}/src/main/resources/</directory> 
           <includes> 
            <include>jaxb.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

colocar el archivo en jaxb.propertiesdirectory y especificar la ubicación del paquete (outputDirectory) y esto va a copiar el recurso antes del envasado.

+0

Esto funcionó como un encanto. – webDeveloper

+0

en mi caso la parte ' valida' estaba mal, porque la carpeta no existía en esa fase, supongo. Lo cambié a ' process-resources' y ahora funciona – kiedysktos

0

añadir a su pom.xml

<resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/jaxb.properties</include> 
      </includes> 
     </resource>   
    </resources> 
Cuestiones relacionadas