2012-01-30 12 views

Respuesta

40

Si coloca algo en el directorio src/main/resources, de manera predeterminada terminará en su *.jar final. Si se hace referencia a ella de algún otro proyecto y no se puede encontrar en una ruta de clases, a continuación, lo hizo uno de esos dos errores:

  1. *.jar no se ha cargado correctamente (tal vez del tipo O en el camino?)
  2. no se está dirigiendo el recurso correctamente, por ejemplo: /src/main/resources/conf/settings.properties se ve en la ruta de clase como classpath:conf/settings.properties
+2

El protocolo de URL "classpath:" es específico de Spring. – simon

51

una alternativa más limpia de poner su archivo de configuración en una subcarpeta de src/main/resources sería para mejorar su ruta de clases ubicaciones. Esto es extremadamente fácil de hacer con Maven.

Por ejemplo, coloca el archivo de propiedades en una nueva carpeta src/main/config, y añadir lo siguiente a su pom:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/config</directory> 
     </resource> 
    </resources> 
</build> 

A partir de ahora, todos los archivos archivos bajo src/principal/config se considera como parte de la ruta de clases (tenga en cuenta que puede excluir algunos de ellos de la jarra final si es necesario: sólo tiene que añadir en la sección de construcción:

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <excludes> 
        <exclude>my-config.properties</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
    </plugins> 

para que my-config.properties se encuentren en su classpath cuando ejecute su aplicación desde su IDE, pero se mantendrá externa desde su jar en su distribución final).

+1

+1 | Eche un vistazo a la documentación de referencia para esta función: http://maven.apache.org/pom.html#Resources – rwitzel

+1

Me molestaría que esto sea "más limpio", pero posiblemente, al menos, una alternativa útil en los casos en que la estructura del directorio no puede ser modificada. Seguir la convención es siempre más limpio – StormeHawke

Cuestiones relacionadas