¿Cómo agrego archivos de configuración o cualquier otro recurso en mi jar usando gradle?
Mi estructura de proyecto:
src / main / java / com / perseus / .. --- paquetes Java (archivos fuente)
src / main / java / config / *. xml --- Archivos de configuración de Spring
Estructura esperada del tarro:
com / perseus / .. --- paquetes Java (archivos de clase)
config / *. xml --- Archivos de configuración de Spring
gradle
build.gradle
Pritesh Mhatre
fuente
fuente
Mueva los archivos de configuración de
src/main/java
asrc/main/resources
.fuente
Gracias chicos, estaba migrando un proyecto existente a Gradle y no me gustó tanto la idea de cambiar la estructura del proyecto.
Lo he descubierto, pensé que esta información podría ser útil para los principiantes.
Aquí hay una tarea de muestra de mi 'build.gradle':
version = '1.0.0' jar { baseName = 'analytics' from('src/main/java') { include 'config/**/*.xml' } manifest { attributes 'Implementation-Title': 'Analytics Library', 'Implementation-Version': version } }
fuente
sourceSets.main.resources { srcDirs = ["src/main/java"]; exclude "**/*.java" }
.De forma predeterminada, los archivos que agregue
src/main/resources
se incluirán en el jar.Si necesita cambiar ese comportamiento por cualquier motivo, puede hacerlo configurando
sourceSets
.Esta parte de la documentación tiene todos los detalles.
fuente
.../resources/
se incluye el contenido de en lugar del directorio de recursos con el contenido?Tuve el mismo problema. Tenía un archivo PNG en un paquete de Java y no se exportó en el JAR final junto con las fuentes, lo que provocó que la aplicación fallara al iniciarse (archivo no encontrado).
Ninguna de las respuestas anteriores resolvió mi problema, pero encontré la solución en los foros de Gradle. Agregué lo siguiente a mi
build.gradle
archivo:Le dice a Gradle que busque recursos en la
src
carpeta y le pide que incluya solo archivos PNG.EDITAR: Tenga en cuenta que si está usando Eclipse, esto romperá sus configuraciones de ejecución y obtendrá un
main class not found
error al intentar ejecutar su programa. Para solucionarlo, la única solución que he encontrado es mover las imágenes a otro directorio,res/
por ejemplo, y configurarlas como ensrcDirs
lugar desrc/
.fuente
+=
sourceSets.main.resources.srcDirs += [ "src/main/java" ]
Tenga en cuenta que la ruta bajo src / main / resources debe coincidir con la ruta del paquete de sus archivos .class que desean acceder al recurso. Vea mi respuesta aquí .
fuente