Estoy construyendo un contenedor usando maven con la instalación simple maven. Si agrego un archivo a src/main/resources
, puede encontrarlo en classpath, pero tiene una carpeta de configuración donde quiero que vaya ese archivo, pero moverlo dentro de la carpeta config hace que desaparezca de classpath.¿Cómo puedo hacer que maven build agregue recursos a classpath?
Respuesta
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:
*.jar
no se ha cargado correctamente (tal vez del tipo O en el camino?)- no se está dirigiendo el recurso correctamente, por ejemplo:
/src/main/resources/conf/settings.properties
se ve en la ruta de clase comoclasspath:conf/settings.properties
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 | Eche un vistazo a la documentación de referencia para esta función: http://maven.apache.org/pom.html#Resources – rwitzel
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
- 1. Añadir maven-build-classpath a plugin ejecución classpath
- 2. ¿Cómo hacer que maven build platform sea independiente?
- 3. Cómo agregar recursos a classpath
- 4. agregue un jar a maven exec: classpath java
- 5. cómo hacer que maven utilice los recursos de prueba
- 6. Maven: agregue una carpeta o archivo jar al classpath actual
- 7. Agregue el archivo de compilación generado a classpath
- 8. ¿Cómo hacer que maven "agregue entradas de directorio" al empaquetar?
- 9. ¿Puedo hacer que un perfil de Maven agregue webResources a una guerra y aún agregar webResources sin perfil?
- 10. Maven - Build with Dependencies
- 11. Agregue tools.jar en classpath del proyecto sbt
- 12. Maven exec plugin- ¿cómo incluir classpath "sistema"?
- 13. ¿Cómo puedo hacer que un módulo Maven dependa de otro?
- 14. cómo detener maven build usando checkstyle
- 15. Maven build OutOfMemoryError Chunck :: new
- 16. Maven - Agregar directorio a classpath mientras se ejecutan las pruebas
- 17. ¿Cómo puedo hacer un jalón en Maven?
- 18. error de maven BUILD FAILURE
- 19. ¿Cómo puedo agregar jar a classpath cuando invoco Jython * sin * agregarlos a $ CLASSPATH?
- 20. Renombrar recursos en Maven
- 21. ¿Recursos de prueba de las dependencias que no están en classpath?
- 22. Agregando classpath a jetty corriendo en maven integration-test
- 23. ¿Puedo hacer que maven-assembly-plugin vaya más rápido?
- 24. maven-failsafe-plugin ¿Fallas y BUILD SUCCESS?
- 25. ¿Cómo hacer que Maven copie el archivo de recursos en el directorio WEB-INF/lib?
- 26. agregando recursos adicionales a un maven pom
- 27. ¿Cómo hacer que EntityFramework agregue filas en orden?
- 28. Build Maven Project Without Running Unit Tests
- 29. Ant build classpath jar genera "error al abrir archivo zip"
- 30. ¿Cómo puedo tener una dependencia de Maven en classpath en tiempo de ejecución pero no en classpath de prueba?
El protocolo de URL "classpath:" es específico de Spring. – simon