如何使用Maven将configuration文件包含在JAR的“META-INF / services”文件夹中

我正在使用Maven构buildEclipse中的Java项目。 我正在使用一些旧项目中的回收代码,其中一个类在JAR的“META-INF / services”文件夹中查找具有特定名称的文件,然后parsing该文件的文本。 在这个特定的例子中,它查找一个具有Java接口名称的文件,然后从文件内部抓取实现的类名称。

所以基本上我想要做的是在JAR的“META-INF / services”文件夹中包含一个文件名(X)和一行文本(Y) 。 我猜这应该使用Maven完成,也许通过在POM文件中指定一个属性,但我的研究还没有发现任何东西。 我知道你不应该硬编码或手动输出任何META文件,所以我不知道该怎么做。

提前致谢。

用位置src/main/resources 创build一个新的源文件夹 ,然后在那里创build你的META-INF/services文件夹并放到你的FQCN文件中。 这应该自动将它们复制到jar文件中。 所以你会有:

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

值得注意的是,这也适用于具有默认源代码集的Gradle项目。

默认情况下,Maven在以下位置查找资源:

 src/main/resources 

所以把它放在

 src/main/resources/META-INF/services 

另外,如果你的项目没有使用标准的目录结构(或者你只是希望有另外的资源目录),你可以手动指定POM文件的资源目录 。

例如,如果您的META-INF/services位于项目目录根目录下名为resources的文件夹中,可以如下指定它:

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

您可以通过添加多个<resource>元素来使用它来指定多个目录。