java eclipse maven pom.xml

java - Cómo incluir un archivo de configuración en la carpeta "META-INF/services" de un JAR usando Maven



eclipse pom.xml (3)

Estoy trabajando en un proyecto de Java en Eclipse, que está construido con Maven. Estoy usando un código reciclado de un proyecto anterior, y una de estas clases busca un archivo en la carpeta "META-INF / services" del JAR con un nombre particular, luego analiza el texto de este archivo. En este ejemplo particular, busca un archivo con el nombre de una interfaz Java, luego toma el nombre de clase de la implementación desde el interior del archivo.

Básicamente, lo que trato de hacer es incluir un archivo en la carpeta "META-INF / services" del archivo JAR con un nombre de archivo (X) y una línea de texto (Y) . Supongo que esto debería hacerse usando Maven, tal vez especificando un atributo en el archivo POM, pero mi investigación no ha encontrado nada. Sé que se supone que no debes codificar ni escribir manualmente ningún archivo META, así que no estoy seguro de qué hacer aquí.

Gracias por adelantado.


Alternativamente, si su proyecto no usa una estructura de directorio estándar (o simplemente desea tener directorios de recursos alternativos), puede especificar directorios de recursos manualmente en el archivo POM.

Por ejemplo, si sus servicios META-INF/services están ubicados en una carpeta llamada resources que se encuentra en la raíz de su directorio de proyecto, podrían especificarlo de la siguiente manera:

<project> ... <build> ... <resources> <resource> <directory>resources</directory> </resource> </resources> ... </build> ... </project>

Puede usar esto para especificar varios directorios agregando múltiples elementos <resource> .


Por defecto, Maven busca recursos en:

src/main/resources

Así que ponlo en

src/main/resources/META-INF/services


Cree una nueva carpeta fuente con la ubicación src/main/resources , luego cree su carpeta META-INF/services allí y coloque su archivo FQCN. Esto debería copiarlos en el archivo jar automáticamente. Entonces tendrás:

Project | src | | main | | java | | [your source code] | | resources | | META-INF | | services | | [your service files]

Vale la pena señalar que esto también se aplica a los proyectos de Gradle con los conjuntos fuente predeterminados.